MongoDB Spring Data Criteria不是运算符

时间:2013-10-14 05:26:23

标签: spring-data-mongodb

我有以下代码使用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" }

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

2 个答案:

答案 0 :(得分:9)

我改用了'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/

答案 1 :(得分:3)

根据documentationnot()正在影响紧跟在之后的条款。那是.and("Age").is("23")。但你可能不得不把它放在is之前。

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

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