最佳答案
我肯定在 MongoDB 查询中遗漏了一些非常基本的东西,似乎不能得到这个简单的条件。
考虑这个集合
> db.tests.find()
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
{ "_id" : ObjectId("..."), "name" : "Test2" , "deleted" : false}
{ "_id" : ObjectId("..."), "name" : "Test3" }
我只想查询所有“未删除”的项目
我知道如何找到“已删除”标志设置为真的项目:
> db.tests.find({deleted:true})
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
但是我如何找到所有不是 "deleted"
的项目(例如,否定上面的查询,或者换句话说,任何没有 "deleted"
字段或者值为 false
的项目
我试图通过猜测 (请不要笑...)
> db.tests.find({$not : {deleted: true}})
(返回无结果)
> db.tests.find({$not : {$eq:{deleted:true}}})
Error: {“ $err”: “ void operation: $eq”,“ code”: 10068}错误: {“ $err”: “无效操作符: $eq”,“ code”: 10068}
> db.tests.find({deleted:{$not: true}})
Error: {“ $err”: “ void use of $not”,“ code”: 13041}错误: {“ $err”: “无效使用 $not”,“ code”: 13041}
> db.tests.find({deleted:{$not: {$eq:true}}})
Error: {“ $err”: “ void use of $not”,“ code”: 13034}错误: {“ $err”: “无效使用 $not”,“ code”: 13034}
我错过了什么?