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