it-swarm.com.de

Spring Data Mongo verwenden OR in Abfrage

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?

12
paul

Ich denke das könnte funktionieren

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

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

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

Sie können den Operator $ in in Spring Java verwenden:

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

1
pama

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