Trouver le sous-document en tableau avec mongodb

je suis à jouer avec le bios Exemple de la Collection de http://docs.mongodb.org/manual/reference/bios-example-collection pour me renseigner sur l'interrogation mongodb.

je veux récupérer des informations sur les prix remportés par _id: 1année : 1975.

j'ai essayé plusieurs requêtes, parmi ceux

bios.find({
    "_id" : 1,
    "awards" : {
        "year" : 1975
    }
});

mais je ne reçois jamais le bon document. Comment puis-je récupérer ce document dans le tableau?

19
demandé sur mritz_p 2013-10-28 14:54:57

1 réponses

Vous devez utiliser le point:

bios.find({"_id" : 1, "awards.year" : 1975 });

c'est une requête plutôt inutile, parce que vous avez aussi le _id dans la requête, mais je suppose que c'est dû au fait que vous jouez avec un exemple. Aussi, vous dites que vous cherchez des récompenses de 1967, mais le code dit 1975.

Si vous recherchez "awards" : { "year" : 1975 }, mongodb va chercher une correspondance exacte du sous-document entier awards. Dans ce cas, ce n'est pas ce que vous voulez. Aussi, depuis awards est un tableau, ce sera toujours faux. Si vous souhaitez consulter un document dans une liste, $elemMatch serait la voie à suivre.

35
répondu mnemosyn 2013-10-28 11:03:07