Spring数据mongo在Query中使用OR

我们来看看有人可以帮忙解决这个问题。

我想使用Spring Data mongodb的Repository,我希望使用Query annotation按值A=10 or A=20过滤find

  @Query("{A: 10, A:20}") findById(int id); 

勉强“,”尝试制作一个AND,我需要一个OR。

有什么想法吗?

我认为这可能有用

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

或者,如果您使用的是Criteria 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, .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]}}") 

您可以在Spring Java中使用$ in运算符:

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

 Query query = new Query(); Criteria criteria = new Criteria(); criteria.orOperator(Criteria.where("category").is("your_Value_Category"), Criteria.where("parentCategory").is("your_Value_ParentCategory")); query.addCriteria(criteria); mongoTemplate.find(query, YourPersistenceClass.class); 

您可以使用Spring的Query结构:

 Query query = new Query(); query.addCriteria(Criteria.where("id").is(10).orOperator(Criteria.where("id").is(20)); this.client.findOne(query, clazz);