Подтвердить что ты не робот

Запросы 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})

Возвращает пустой набор. Что не так? Заранее благодарю

4b9b3361

Ответ 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 } 

Также вы можете изучить этот документ о запросах и нулях, вероятно, должны помочь вам избежать возможных будущих ошибок.