Я уверен, что в запросах MongoDB отсутствует что-то очень основное, похоже, не получается получить это простое условие.
Рассмотрим эту коллекцию
> db.tests.find()
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
{ "_id" : ObjectId("..."), "name" : "Test2" , "deleted" : false}
{ "_id" : ObjectId("..."), "name" : "Test3" }
Я просто хотел бы запросить все элементы, которые не удалены
Я знаю, как найти элемент с флагом "deleted", установленным в true:
> db.tests.find({deleted:true})
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
Но как мне найти все элементы, которые НЕ "deleted"
(например, отрицают вышеуказанный запрос или, другими словами, любые элементы, которые либо не имеют поля "deleted"
, либо имеют значение со значением false
Что я пытался угадать (пожалуйста, не смейтесь...)
> db.tests.find({$not : {deleted: true}})
(не возвращает результатов)
> db.tests.find({$not : {$eq:{deleted:true}}})
error: { "$ err" : "invalid operator: $eq", "code" : 10068}
> db.tests.find({deleted:{$not: true}})
error: { "$ err" : "неверное использование $not", "code" : 13041}
> db.tests.find({deleted:{$not: {$eq:true}}})
error: { "$ err" : "неверное использование $not", "code" : 13034}
Что мне не хватает?