Запросы MongoDB с нулевым значением
Моя коллекция (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
- чтобы проиндексировать нуль)
Но, выполняя:
db.organization.find({"parent":null})
Возвращает пустой набор. Что не так? Заранее благодарю
Ответы
Ответ 1
У меня была такая же проблема. После прочтения следующих документов
Я попытался запросить различные типы элементов BSON и обнаружил, что мой null был представлен как элемент BSON типа 6 (undefined, устарел) вместо ожидаемого элемента BSON типа 10 (null).
db.collection.find({ field: { "$type" : 6} };
Ответ 2
Проверено только script на 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 }
Также вы можете изучить этот документ о запросах и нулях, вероятно, должны помочь вам избежать возможных будущих ошибок.