Je suis sûr de manquer quelque chose de très basique dans les requêtes MongoDB, je n'arrive pas à obtenir cette condition simple.
Considérez cette collection
> db.tests.find()
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
{ "_id" : ObjectId("..."), "name" : "Test2" , "deleted" : false}
{ "_id" : ObjectId("..."), "name" : "Test3" }
J'aimerais simplement interroger tous les éléments qui ne sont pas "supprimés"
Je sais comment trouver l'élément qui a un indicateur "supprimé" défini sur true:
> db.tests.find({deleted:true})
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
Mais comment trouver tous les éléments qui NE sont PAS "supprimés"
(par exemple, nier la requête ci-dessus, ou en d'autres termes, tous les éléments qui n'ont pas un champ "supprimé"
, ou l'ont avec la valeur false
)
Ce que j'ai essayé en devinant (ne riez pas...)
> db.tests.find({$not : {deleted: true}})
(ne retourne aucun résultat)
> db.tests.find({$not : {$eq:{deleted:true}}})
erreur: { "$err" : "opérateur non valide: $eq", "code" : 10068 }
> db.tests.find({deleted:{$not: true}})
erreur: { "$err" : "utilisation non valide de $not", "code" : 13041 }
> db.tests.find({deleted:{$not: {$eq:true}}})
erreur: { "$err" : "utilisation non valide de $not", "code" : 13034 }
Qu'est-ce que j'oublie?