Question

Je voudrais interroger une collection mongo pour les dossiers qui soit ne disposent pas de valeur pour un champ nommé « action », ou qui ont explicitement la valeur « http » pour « système ». Ça a l'air assez facile, mais ce problème est avéré plus complexe qu'il n'y paraît.

Depuis db.collection.find({'scheme': None}) retourne tous les enregistrements où « scheme » est non défini (pas de champ d'index), je suppose d'abord ce qui suit fonctionnerait:

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

Cependant, cela semble exclure les valeurs dans lesquelles « système » ne sont pas définies, donc je ne peux que supposer qu'il est à la recherche d'enregistrements où régime est soit « http », soit explicitement défini à None. Cela semble être un peu contre-intuitif, mais nous l'avons. Ma deuxième tentative a été la suivante:

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

Cela exclut également résultat lorsque système est défini. Cette fois-ci, je ne peux même penser à une raison logique pour laquelle cela est un échec.

Toutes les idées pourquoi c'est un échec, et comment je peux l'obtenir pour travailler comme vous le souhaitez?

Merci

EDIT: Juste pensé que je constate que je joue cette requête par Python (pymongo), ce qui explique la None (sur la null de Javascript)

Était-ce utile?

La solution

Résolue. Ceci est apparemment une question de ma version de MongoDB (1.4.4), le problème est résolu dans 1.6.5

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top