MongoDB查询具有null值

时间:2012-02-16 13:25:09

标签: mongodb null

我的收藏(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})

返回空集。怎么了?提前谢谢

2 个答案:

答案 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的文档,可能应该可以帮助您避免将来可能出现的错误。