11

我有以下代码使用spring data mongodb(版本1.2.3.RELEASE)在mongo db中搜索

Criteria searchCriteria = Criteria.where("NAME").is("TestName")
        .and("ID").is("TestID").not().and("Age").is("23");

我得到了以下查询(没有非运算符)

Query: { "NAME" : "TestName" , "ID" : "TestID", "Age" : "23" }

我期待以下查询

Query: { "NAME" : "TestName" , "$not" : { "ID" : "TestID"}, "Age" : "23" }

我究竟做错了什么 ?任何帮助是极大的赞赏。谢谢

4

3 回答 3

18

我用'ne'代替。

 Criteria searchCriteria = Criteria.where("NAME").is("TestName").and("ID").ne("TestID").and("Age").is("23");

Mongo db 'not' 是一个逻辑运算符。 http://docs.mongodb.org/manual/reference/operator/query/not/

于 2013-10-14T07:38:44.383 回答
4

根据文档not()影响紧随其后的子句。那就是.and("Age").is("23")。但是你可能必须把它放在is.

Criteria searchCriteria = Criteria.where("NAME").is("TestName").and("ID").not().is("TestID").and("Age").is("23");

如果这不起作用,请尝试使用andOperatorandnot().where("ID")构造。

于 2013-10-14T06:21:31.557 回答
0

如果您有多个项目,那么您可以使用以下查询 mongo andOperator(Criteria.where(name).nin(ids))

于 2022-02-15T00:31:59.273 回答