我的收藏(MongoDB v 2.0.2)有以下记录:
db.organization.find({})
{ "_id" : 1001, "path" : [ ], "parent" : null }
{ "_id" : 1002, "path" : [ 1001 ], "parent" : NumberLong(1001) }
organization
有索引:
db.organization.ensureIndex({"path":1});
db.organization.ensureIndex({"parent":1},{sparse:false});
(注意我把awarnes sparse : false
- 授予null索引)
但是,执行:
db.organization.find({"parent":null})
返回空集。怎么了?提前谢谢
答案 0 :(得分:18)
我有同样的问题。阅读以下文件后
我试图查询不同的BSON元素类型,发现我的null表示为BSON元素类型6(未定义,不推荐使用),而不是预期的BSON元素类型10(null)。
db.collection.find({ field: { "$type" : 6} };
答案 1 :(得分: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})
实际上会返回您期望的一个文档:
{ "_id" : 1001,
"path" : [],
"parent" : null }
此外,您可以查看有关querying and nulls的文档,可能应该可以帮助您避免将来可能出现的错误。