Pregunta

Me gustaría consultar una colección de registros mongo que o bien no tienen un valor para un campo denominado 'esquema', o que tienen explícitamente el valor de 'http' a 'esquema'. Suena bastante fácil, pero este problema ha resultado ser más compleja de lo que parece a primera vista.

Desde db.collection.find({'scheme': None}) devuelve todos los registros en los que no está definido 'esquema' (sin campo de índice), que inicialmente asumió el siguiente funcionaría:

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

Sin embargo, esto parece excluir los valores en los que no está definido 'esquema', así que sólo puedo asumir que es la búsqueda de los registros en los esquema es bien 'http' o explícitamente definido para ser None. Esto parece ser un poco contrario a la intuición, pero no lo tenemos. Mi segundo intento fue el siguiente:

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

Esto también excluye resultan donde está definido esquema. Esta vez, no puede ni siquiera pensar en una razón lógica por qué esto está fallando.

Cualquier idea por qué esto está fallando, y cómo puedo conseguir que funcione como se desea?

Gracias

EDIT: sólo pensé en cuenta que yo estoy realizando esta consulta a través de Python (pymongo), lo que explica la None (más null de Javascript)

¿Fue útil?

Solución

Se resuelve:. Esto es al parecer un problema de mi versión de mongodb (1.4.4), el problema se resuelve en 1.6.5

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top