Abfrage für boolesches Feld als "nicht wahr" (z. B. entweder falsch oder nicht vorhanden)

Ich bin sicher, ich bin fehlt etwas sehr Grundsätzliches in MongoDB-Abfragen, kann nicht scheinen, um diese einfache Bedingung.

Betrachten Sie diese Sammlung

> db.tests.find()
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}
{ "_id" : ObjectId("..."), "name" : "Test2" , "deleted" : false}
{ "_id" : ObjectId("..."), "name" : "Test3" }

Möchte ich einfach auf Abfrage alle Elemente, die "nicht gelöscht"

Ich weiß, wie zu finden das Element, das ein "gelöscht" - flag auf true gesetzt:

> db.tests.find({deleted:true})
{ "_id" : ObjectId("..."), "name" : "Test1" , "deleted" : true}

Aber wie finde ich alle Elemente, die NICHT "deleted" (z.B. negieren der obigen Abfrage, oder in anderen Worten, alle Elemente, die entweder nicht über eine "deleted" Feld, oder haben es mit Wert false

, Was ich versucht habe durch erraten (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 bin ich?

InformationsquelleAutor der Frage Eran Medan | 2013-09-16

Schreibe einen Kommentar