我有以下代码使用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" }
我做错了什么? 任何帮助是极大的赞赏。 感谢
答案 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)
根据documentation,not()
正在影响紧跟在之后的条款。那是.and("Age").is("23")
。但你可能不得不把它放在is
之前。
Criteria searchCriteria = Criteria.where("NAME").is("TestName").and("ID").not().is("TestID").and("Age").is("23");
如果这不起作用,请尝试使用andOperator
和not().where("ID")
构造。