Ich habe eine Sammlung, wo einige der Objekte einen Schlüssel foo
enthalten. Ich versuche jetzt, nach allen Objekten zu suchen, die zwar diesen Schlüssel haben, aber nicht mit dem spezifischen Wert bar
. Dazu benutze ich die folgende Abfrage:MongoDB/PyMongo: Abfrage mehrerer Kriterien - unerwartete Ergebnisse
Ich dachte, dass beide Kriterien über ein logisches UND verbunden sind. Ich bekomme aber auch Objekte, die keinen Schlüssel foo
haben. In der Tat habe ich das gleiche Ergebnis, wenn ich die Abfrage nur
collection.find({'foo': {'$ne': 'bar'}})
Auf dem anderen hans, wenn ich
collection.find({'foo': {'$exists': True}})
ich mit foo
richtig nur Objekte erhalten verwenden, aber obvisouly von allen, so einige von ihnen haben den Wert bar
.
Wie muss ich meine Abfrage formulieren, um mein erstes Ergebnis zu erzielen? Gibt es eine Reihenfolge, in der mehrere Kriterien getestet werden? Spezifiziere ich explizit das logische UND beider Kriterien?
Dies ist ein großartiges Beispiel für eine grundlegende pymongo Abfrage. Ich wünschte, es wäre früher entstanden, als ich "pymongo find examples" googelte: - \. +1 –
Ich glaube nicht, dass es spezielle Beispiele für PyMongo gibt, da die Syntax im Wesentlichen die gleiche wie bei der Verwendung der Mongo-Shell ist. I _think_ die Mongo-Shell ist etwas großzügiger, wenn es darum geht, Zitate um Schlüsselwörter und Feldnamen herum zu haben (zB sollte '{$ ne: 'bar'}' genauso funktionieren wie '{' $ ne ':' bar '} '). Vielleicht könnte auch die Großschreibung von beispielsweise "Wahr" von Bedeutung sein. – Christian