Frage

Ich möchte eine Mongo Sammlung für Datensätze abfragen, die entweder keinen Wert für ein Feld ‚Schema‘ genannt haben, oder explizit den Wert ‚http‘ für ‚scheme‘. Klingt ziemlich einfach, aber dieses Problem hat sich als komplexer als es zunächst erscheint.

Da db.collection.find({'scheme': None}) alle Datensätze zurückgibt, wo ‚scheme‘ nicht definiert ist (kein Indexfeld), habe ich zunächst davon ausgegangen folgendes funktionieren würde:

db.collection.find({'scheme': {'$in': ['http', None]}})

Allerdings scheint diese Werte auszuschließen, in der ‚Schema‘ nicht definiert ist, so dass ich nur annehmen, kann es für Datensätze sucht, wo Schema ist entweder ‚http‘ oder explizit sein None definiert. Dies scheint ein wenig eingängig zu sein, aber da haben wir es. Mein zweiter Versuch war die folgende:

db.collection.find( {'$or': [{'scheme': {'$exists': False}}, {'scheme': 'http'}]})

Dieses auch schließt führen, dass Schema nicht definiert ist. Dieses Mal kann ich nicht einmal denken Sie an einen logischen Grund, warum dies versagt.

Irgendwelche Ideen, warum dies versagt, und wie kann ich es an die Arbeit wie gewünscht?

Danke

EDIT: Ich dachte, ich möchte anmerken, dass ich diese Abfrage durch Python bin Ausführen (pymongo), die die None erklärt (über Javascripts null)

War es hilfreich?

Lösung

gelöst. Dies ist offensichtlich ein Problem meiner Version von mongodb (1.4.4), wird das Problem in 1.6.5 gelöst

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top