MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

MongoDB:come trovare un documento tramite un ID all'interno di un documento nidificato

Usa la notazione del punto:

Quando il campo contiene un documento incorporato, una query può specificare una corrispondenza esatta nel documento incorporato o specificare una corrispondenza per singoli campi nel documento incorporato utilizzando la notazione del punto.

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
})

Se devi produrre solo la parte di un array in cui hai il tuo _id, devi usare il dollaro nella proiezione

L'operatore posizionale $ limita il contenuto di un risultato della query a contenere solo il primo elemento che corrisponde al documento della query.

e la tua domanda sarebbe simile a:

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
}, {
   "accounts.$.": 1
})

PS se hai bisogno dell'output come nelle tue domande modificate, usa questo:

db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
 }, {
   accounts : 0
 })