MongoDB查询具有null值

Dew*_*wfy 17 null mongodb

我的收藏(MongoDB v 2.0.2)有以下记录:

db.organization.find({})
{ "_id" : 1001, "path" : [ ], "parent" : null }
{ "_id" : 1002, "path" : [ 1001 ], "parent" : NumberLong(1001) }
Run Code Online (Sandbox Code Playgroud)

organization 有索引:

db.organization.ensureIndex({"path":1});
db.organization.ensureIndex({"parent":1},{sparse:false});
Run Code Online (Sandbox Code Playgroud)

(注意我把awarnes sparse : false- 授予null索引)但是,执行:

db.organization.find({"parent":null})
Run Code Online (Sandbox Code Playgroud)

返回空集.怎么了?先感谢您

Dan*_* K. 19

我遇到过同样的问题.阅读以下文件后

我试图查询不同的BSON元素类型,发现我的null表示为BSON元素类型6(未定义,不推荐),而不是预期的BSON元素类型10(null).

db.collection.find({ field: { "$type" : 6} };
Run Code Online (Sandbox Code Playgroud)

  • 根据第一个链接,我认为它应该是`db.collection.find({field:{"$ type":10}}; (4认同)
  • @AbdelHady:抓一点,我认为`{$ type:10}`确实是对的,我只是让自己感到困惑. (2认同)

And*_*ich 6

刚刚在2.0和2.0.2检查了以下脚本:

db.items.insert({ "_id" : 1001, "path" : [ ], "parent" : null })
db.items.insert({ "_id" : 1002, "path" : [ 1001 ], "parent" : NumberLong(1001) })
db.items.ensureIndex({"path":1});
db.items.ensureIndex({"parent":1},{sparse:false});
db.items.find({"parent":null})
Run Code Online (Sandbox Code Playgroud)

实际上返回一个你期望的文档:

{ "_id" : 1001,
  "path" : [],
  "parent" : null } 
Run Code Online (Sandbox Code Playgroud)

此外,您可以查看有关查询和空值的文档,可能应该可以帮助您避免将来可能出现的错误.