MongoDB 查询

By | 2021年12月31日

1 or与and复杂条件查询

下面用Mongo实现关系型数据库SQL:select * from where (name="张三" and sex="男") or age >=30

1.1 MongoDB方式查询

// 第一步:实现 (name="张三" and sex="男")
db.getCollection('user').find(
    {"$and":[{"name":"张三"},{"sex":"男"}]}
)
// 第二步:实现 age >30
db.getCollection('user').find(
    {"$or":[{"age":{$gte:30}}]}
)
// 第三步:将第一步参数拼接到第二步or条件里,实现最终结果
db.getCollection('user').find(
    { "$or": [
        {"$and":[{"name":"张三"},{"sex":"男"}]},
        {"age":{"$gte":30}}
      ]
    }
   
)

1.2 spring-data-jpa mongotemplate 方式查询

// 第一步:实现 (name="张三" and sex="男")
query.addCriteria(
    new Criteria().andOperator(
        Criteria.where("name").is("张三"),
        Criteria.where("sex").is("男")
    )
);
// 第二步:实现 age >30
query.addCriteria(
    new Criteria().orOperator(
        Criteria.where("age").gte(30)
    )
);
// 第三步:将第一步参数拼接到第二步or条件里,实现最终结果
query.addCriteria(
    new Criteria().orOperator(
        new Criteria().andOperator(
            Criteria.where("name").is("张三"),
            Criteria.where("sex").is("男")
        ),
        Criteria.where("age").gte(300)
    )
);

发表评论

您的电子邮箱地址不会被公开。