Подтвердить что ты не робот

Spring использование данных mongo OR в запросе

Давайте посмотрим, поможет ли кто-нибудь в этом.

Я хочу использовать репозиторий Spring Data mongodb, и я хочу использовать аннотацию Query для фильтрации поиска по значению A=10 or A=20

  @Query("{A: 10, A:20}")
  findById(int id);

Обидно "," попробуйте сделать AND, и мне нужен OR.

Любая идея, пожалуйста?

4b9b3361

Ответ 1

Я думаю, что это может сработать

@Query("{'$or':[ {'A':10}, {'B':20} ] }")

Ответ 2

Или, если вы используете API-интерфейс критериев

Criteria criteria = new Criteria();
        criteria.orOperator(Criteria.where("A").is(10),Criteria.where("B").is(20));
        Query query = new Query(criteria);

        mongoOps.find(query, <Yourclass>.class, "collectionName");

Ответ 3

Использовать Spring BasicQuery:

DBObject queryCondition = new BasicDBObject();        
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("A", 10));
values.add(new BasicDBObject("B", 20));
queryCondition.put("$or", values);
Query query = new BasicQuery(queryCondition);
mongoTemplate.find(query, clazz);

Ответ 4

Для этого вы можете использовать оператор $in. Я не знаю Java Spring, но, учитывая ваш пример, часть Query должна выглядеть так:

@Query("{A: {$in: [10, 20]}}")

Ответ 5

Вы можете использовать оператор $in в Spring Java:

Criteria criteria = Criteria.where("field").in(listOfOptions);

Ответ 6

Вы можете использовать Spring Структура запроса:

Query query = new Query();
query.addCriteria(Criteria.where("id").is(10).orOperator(Criteria.where("id").is(20));
this.client.findOne(query, clazz);