Domanda

Vorrei interrogare una collezione Mongo per i record che o non hanno un valore per un campo denominato 'regime', o hanno esplicitamente il valore 'http' per 'schema'. Suoni abbastanza facile, ma questo problema si è rivelato più complesso di quanto appare primi.

Dal db.collection.find({'scheme': None}) restituisce tutti i record in cui è undefined 'schema' (nessun campo indice), inizialmente ho assunto la seguente dovrebbe funzionare:

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

Tuttavia, questo sembra escludere valori in cui è undefined 'schema', quindi posso solo supporre che è alla ricerca di record in cui schema è o 'http', o esplicitamente definito come None. Questo sembra essere un po 'controintuitivo, ma non l'abbiamo. Il mio secondo tentativo è stato il seguente:

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

Questo esclude anche il risultato in cui schema è indefinito. Questa volta, non posso nemmeno pensare a una ragione logica perché questo sta venendo a mancare.

Tutte le idee perché questo sta venendo a mancare, e come posso farlo funzionare, se lo desideri?

Grazie

EDIT: Ho pensato di notare che io sto eseguendo questa query tramite Python (pymongo), il che spiega la None (oltre null di Javascript)

È stato utile?

Soluzione

Risolto:. Questo è apparentemente una questione di mia versione di MongoDB (1.4.4), il problema è risolto in 1.6.5

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top