web-dev-qa-db-fra.com

Utilisation de mongo de données de printemps OR dans la requête

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?

12
paul

Je pense que cela pourrait fonctionner

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

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");
38
hellojava

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);
2
david

Vous pouvez utiliser l'opérateur $ in dans Spring Java:

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

1
pama

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]}}")
1
JohnnyHK