Ответ 1
Я думаю, что это может сработать
@Query("{'$or':[ {'A':10}, {'B':20} ] }")
Давайте посмотрим, поможет ли кто-нибудь в этом.
Я хочу использовать репозиторий Spring Data mongodb, и я хочу использовать аннотацию Query для фильтрации поиска по значению A=10 or A=20
@Query("{A: 10, A:20}")
findById(int id);
Обидно "," попробуйте сделать AND, и мне нужен OR.
Любая идея, пожалуйста?
Я думаю, что это может сработать
@Query("{'$or':[ {'A':10}, {'B':20} ] }")
Или, если вы используете 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");
Использовать 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);
Для этого вы можете использовать оператор $in
. Я не знаю Java Spring, но, учитывая ваш пример, часть Query
должна выглядеть так:
@Query("{A: {$in: [10, 20]}}")
Вы можете использовать оператор $in в Spring Java:
Criteria criteria = Criteria.where("field").in(listOfOptions);
Вы можете использовать Spring Структура запроса:
Query query = new Query();
query.addCriteria(Criteria.where("id").is(10).orOperator(Criteria.where("id").is(20));
this.client.findOne(query, clazz);