Как получить доступ к данным (в некоторой области) в MongoDB, которые имеют только значение NULL, но не неопределенное значение?Решил, что это ошибка в компасе - PullRequest
0 голосов
/ 30 мая 2018

Как получить данные (в некотором поле) в MongoDB, для которых установлено только null, но не undefined?

Я пробовал $exists: true и $and, но не удалось.

Каков соответствующий запрос для этого?

enter image description here

Решено: Это ошибка в Compass, этот код работает {$and: [{ tripdurationr: {$exists: true}}, {tripdurationr: null}] }, но Compass добавляет нежелательную букву r к ключу tripduration, и из-за этого мой запрос не сработал.:)

1 Ответ

0 голосов
/ 30 мая 2018

Если я правильно понимаю ваш вопрос:

db.things.insert({a: null, b: 1});
db.things.insert({b: 2});
db.things.find({$and:[{a: null }, {a: {$exists: true}}]});

Вывод:

{ "_id" : ObjectId("5b0efa710d9b6861ee36052e"), "a" : null, "b" : 1 }

Но остерегайтесь следующего:

db.things1.insert({a: null, b: 1});
db.things1.insert({b: 2});
db.things1.insert({ a: undefined, b: 3 });
db.things1.find({$and:[{a: null }, {a: {$exists: true}}]});

Вывод:

{ "_id" : ObjectId("5b0efe730d9b6861ee360531"), "a" : null, "b" : 1 }
{ "_id" : ObjectId("5b0efe7b0d9b6861ee360533"), "a" : undefined, "b" : 3 }

Справочный текст для прочтения для второй части: « MongoDB различает между неопределенным и нулевым » и, возможно, «https://jira.mongodb.org/browse/SERVER-6102"

...