让我们看看是否有人可以帮助解决这个问题。
我想使用 Spring Data mongodb 的存储库,并且我想使用 Query 注释来过滤按值查找A=10 or A=20
@Query("{A: 10, A:20}")
findById(int id);
显然“,”尝试做一个 AND,我需要一个 OR。
请问有什么想法吗?
让我们看看是否有人可以帮助解决这个问题。
我想使用 Spring Data mongodb 的存储库,并且我想使用 Query 注释来过滤按值查找A=10 or A=20
@Query("{A: 10, A:20}")
findById(int id);
显然“,”尝试做一个 AND,我需要一个 OR。
请问有什么想法吗?
或者,如果您使用的是 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, <Yourclass>.class, "collectionName");
我认为这可能有效
@Query("{'$or':[ {'A':10}, {'B':20} ] }")
您可以像这样使用 Spring Data MongoDB:
Query query = new Query();
query.addCriteria(
Criteria.where("").orOperator(
Criteria.where("A").is(10),
Criteria.where("B").is(20)
)
);
mongoTemplate.find(query, YourClazz.class, "CollectionName");
您可以在 Spring Java 中使用 $in 运算符:
Criteria criteria = Criteria.where("field").in(listOfOptions);
除了 helloJava 答案之外,如果您已经有其他条件的查询,您可以直接在 query.addCriteria 上添加 orOperation,如下所示。
query.addCriteria(new Criteria().orOperator(Criteria.where("fieldA").is(value),
Criteria.where("fieldB").is(value2)));
您可以为此使用$in
运算符。我不知道 Java Spring,但鉴于您的示例,该Query
部分应如下所示:
@Query("{A: {$in: [10, 20]}}")
使用 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);
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);