Trovare Secondario in Array con mongodb

Sto giocando intorno con il bios di Raccolta di Esempio da http://docs.mongodb.org/manual/reference/bios-example-collection di educare me stesso su di interrogazione del database.

Voglio recuperare informazioni circa i premi vinti dal _id : 1 in anno : 1975.

Ho provato diverse query, tra quelli

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

ma non ho mai ricevere un documento. Come posso recuperare questo documento nell’array?

InformationsquelleAutor mritz_p | 2013-10-28



One Reply
  1. 37

    È necessario utilizzare il la notazione con il punto:

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

    È piuttosto inutile query, perché hai anche la _id nella query, ma credo che sia dovuto al fatto che si sta giocando con un esempio. Inoltre, stai dicendo che stai cercando premi, dal 1967, ma il codice dice 1975.

    Se si cerca "awards" : { "year" : 1975 }, mongodb, la volontà di cercare una corrispondenza esatta dell’intero documento secondario awards. In questo caso, che non è ciò che si desidera. Inoltre, poiché awards è un array, questo sarà sempre false. Se si voleva cercare un premio specifico documento in un elenco, $elemMatch sarebbe la strada da percorrere.

    • L’anno è stato un errore di battitura. Grazie mille per la dettagliata spiegazione!!!

Lascia un commento