web-dev-qa-db-fra.com

requête mongodb par sous-champ

Comment interroger tous les {"module" : "B"}?

La requête suivante ne fonctionne pas:

db.XXX.find({ "_id" : { "module" : "B" } });

Merci beaucoup!

Ces données ressemblent à:

{
  "_id" : {"module" : "A","date" : ISODate("2013-03-18T07:00:00Z")},
  "value" : {"count" : 1.0}
}

{
  "_id" : {"module" : "B","date" : ISODate("2013-03-18T08:00:00Z")},
  "value" : {"count" : 2.0}
}
18
Linlin

Essayer:

db.XXX.find({ "_id.module" :  "B" });

La différence est que votre requête initiale tenterait de faire correspondre le sous-document entier (c'est-à-dire où _id est un sous-document contenant un champ "module" avec la valeur "B" et rien d'autre).

Référence: Notation point MongoDB

39
AdaTheDev

Pour correspondance exacte sur le sous-document

    db.bios.find(
   {
     '_id.module': 'B'
   }
)

la requête utilise la notation dot pour accéder aux champs d'une subdocument:

Lien de référence

1
NPKR

Utilisez la notation par points:

db.XXX.find({ "_id.module" : "B" })
1
shx2