MongoDB запросы с нулевым значением - PullRequest
17 голосов
/ 16 февраля 2012

Моя коллекция (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})

Возвращает пустой набор. Что случилось? Заранее спасибо

Ответы [ 2 ]

18 голосов
/ 25 апреля 2013

У меня была такая же проблема.После прочтения следующих документов

Я попытался запроситьдля различных типов элементов BSON и обнаружил, что my null был представлен как тип элемента BSON 6 (неопределенный, устарел) вместо ожидаемого типа элемента BSON 10 (null).

db.collection.find({ field: { "$type" : 6} };
6 голосов
/ 16 февраля 2012

Только что проверил следующий скрипт в 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 } 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...