Mal sehen, ob jemand dabei helfen kann.
Ich möchte Repository of Spring Data mongodb verwenden und Query-Annotation verwenden, um die Suche nach dem Wert A=10 or A=20
zu filtern.
@Query("{A: 10, A:20}")
findById(int id);
Obiously "," versuche ein AND zu machen, und ich brauche ein OR.
Irgendeine Idee bitte?
Ich denke das könnte funktionieren
@Query("{'$or':[ {'A':10}, {'B':20} ] }")
Oder wenn Sie eine Kriterien-API verwenden
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's BasicQuery verwenden:
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);
Sie können den Operator $ in in Spring Java verwenden:
Criteria criteria = Criteria.where("field").in(listOfOptions);
Sie können dafür den Operator $in
verwenden. Ich kenne Java Spring nicht, aber in Ihrem Beispiel sollte der Query
-Teil folgendermaßen aussehen:
@Query("{A: {$in: [10, 20]}}")