如何使用 $and 和 $or 子句在 Spring boot for mongodb 存储库中构建自定义查询?

How to build custom query in Spring boot for mongodb repository with $and and $or clause?

如何为 mongodb(使用 mongodb 模板)在 Spring 引导中为以下查询构建自定义查询?

db.getCollection('collectionName').find(
   {$or:[
    {$and:[{"name":"xyz"},{"address:"1234"}]},
    {$and:[{"name":"abc"},{"address":"001"}]},
    {..}
    {..so on..}
    ]})

我们可以使用Criteria Query来查询吗?

您可以通过这种方式构建查询:

Criteria criteria = new Criteria();
criteria.orOperator( 
    Criteria.where("name").is("xyz").and("address").is("1234"),
    Criteria.where("name").is("abc").and("address").is("001"),
    Criteria.where(...),
    Criteria.where(...)
);
Query query = new Query(criteria);
mongoTemplate.find(query, YourClass.class, "CollectionName");

如果您必须使用的标准数量不固定,您可以填充 Criteria 列表并将其传递给 orOperator 函数:

List<Criteria> criterias = new ArrayList<>();
for (...) {
    //populate list
    criterias.add(Criteria.where(...).is(...).and(...).is(...);
}
Criteria criteria = new Criteria();
criteria.orOperator(criterias);