Найти продукт на основе существующего / не существующего значения в поле - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь найти все продукты, которые имеют цену в этой области, но без описания. Я пытался это сделать:

db.collection.find({ "price": { $ne: null } }, { "description" : null})

Я получил результат, но на самом деле я проверил некоторые продукты по идентификатору, и у них было описание, так что запрос не является правильным. У меня также есть проблема с этим запросом (найти элементы с полем описания, не равным NULL):

db.collection.find({ "description" : {$ne:null}})

Я получаю результаты с элементами, которые не имеют описания. Дело в том, что некоторые предметы имеют это поле, а некоторые нет. Этот запрос, список элементов, у которых нет этого поля, но он показывает элементы с description:""

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 05 марта 2020

У Тома был своего рода ответ, но он вставил фильтр во второй аргумент, который является проекцией, попробуйте:

db.collection.find( { "price": { $ne: null }, "description" : { $exists: false } } )

1 голос
/ 05 марта 2020

Существует разница между "существует и имеет значение null" и "не существует".

Измените свой запрос, чтобы использовать $ существующие для обнаружения документов без этого поля.

db.collection.find({ "price": { $ne: null }, { "description" : { $exists: false })
...