【问题标题】:How to build custom query in Spring boot for mongodb repository with $and and $or clause?如何使用 $and 和 $or 子句在 Spring Boot 中为 mongodb 存储库构建自定义查询?
【发布时间】:2022-01-18 10:16:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: spring mongodb spring-boot mongodb-query mongorepository


    【解决方案1】:

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

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

    【讨论】:

    • 请查看修改后的查询
    • 我更新了答案
    • @JavaProgrammer 为你做了这项工作吗?
    猜你喜欢
    • 1970-01-01
    • 2016-08-13
    • 2019-01-14
    • 2017-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-07
    相关资源
    最近更新 更多