2012-11-25 6 views
0

Disons que j'ai une collection avec deux documents ...champ MongoDB sélection comprennent des documents sans champ

{"_id": ..., "msg": "hello world"} 
{"_id": ..., "name": "bob dylan"} 

et une requête ...

db.collection.find({}, {"text": 1}) 

Pourquoi ce retour les deux documents? Y a-t-il un moyen de retourner seulement quand le champ msg existe?

Répondre

3

Votre requête renvoie les deux documents parce que vos critères est vide ({}):

db.collection.find({}, {"text": 1}) 

Si vous ne souhaitez que trouver des documents où se trouve le champ msg, vous pouvez utiliser $exists:

db.collection.find({ msg: { $exists: true}}, { "text" : 1 }) 

Notez que pour le deuxième paramètre à find(), vous demandez uniquement la valeur du champ text à afficher.

Questions connexes