Ich bin sicher, ich vermisse etwas sehr Grundlegendes in MongoDB-Abfragen, kann diese einfache Bedingung nicht bekommen.
Betrachten Sie diese Sammlung
> db.tests.find()
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
{ "_id" : ObjectId("..."), "name" : "Test2" , "deleted" : false}
{ "_id" : ObjectId("..."), "name" : "Test3" }
Ich möchte einfach alle Elemente abfragen, die "nicht gelöscht" sind.
Ich weiß, wie ich das Element finde, bei dem das Flag "Gelöscht" auf "Wahr" gesetzt ist:
> db.tests.find({deleted:true})
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
Aber wie finde ich alle Elemente, die NICHT sind "deleted"
(z. B. die obige Abfrage negieren, oder mit anderen Worten, alle Elemente, die entweder kein "deleted"
Feld oder einen Wert haben?false
Was ich durch Raten versucht habe (bitte nicht lachen ...)
> db.tests.find({$not : {deleted: true}})
(gibt keine Ergebnisse zurück)
> db.tests.find({$not : {$eq:{deleted:true}}})
Fehler: {"$ err": "ungültiger Operator: $ eq", "Code": 10068}
> db.tests.find({deleted:{$not: true}})
Fehler: {"$ err": "ungültige Verwendung von $ not", "Code": 13041}
> db.tests.find({deleted:{$not: {$eq:true}}})
Fehler: {"$ err": "ungültige Verwendung von $ not", "Code": 13034}
Was vermisse ich?