Voyons si quelqu'un peut nous aider.
Je veux utiliser le référentiel de Spring Data mongodb et utiliser l'annotation de requête pour filtrer la recherche par la valeur A=10 or A=20
@Query("{A: 10, A:20}")
findById(int id);
Obieusement "," essayez de faire un AND, et j'ai besoin d'un OR.
Une idée s'il vous plaît?
Je pense que cela pourrait fonctionner
@Query("{'$or':[ {'A':10}, {'B':20} ] }")
Ou si vous utilisez une API de critères
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");
Utilisez BasicQuery de Spring:
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);
Vous pouvez utiliser l'opérateur $ in dans Spring Java:
Criteria criteria = Criteria.where("field").in(listOfOptions);
Vous pouvez utiliser l'opérateur $in
pour cela. Je ne connais pas Java Spring, mais étant donné votre exemple, la partie Query
devrait ressembler à ceci:
@Query("{A: {$in: [10, 20]}}")