MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

MongoDB:Como encontrar um documento por um id dentro de um documento aninhado


Use notação de ponto:

Quando o campo contém um documento incorporado, uma consulta pode especificar uma correspondência exata no documento incorporado ou especificar uma correspondência por campos individuais no documento incorporado usando a notação de ponto.
db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
})

Se você precisar gerar apenas a parte de uma matriz em que você tem seu _id, precisará usar o dólar na projeção

O operador posicional $ limita o conteúdo de um dos resultados da consulta para conter apenas o primeiro elemento correspondente ao documento da consulta.

e sua consulta ficaria assim:
db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
}, {
   "accounts.$.": 1
})

P.S. se você precisar da saída como em suas perguntas modificadas, use isto:
db.coll.find({
   "accounts._id" :ObjectId("5546329a470019850084a611")
 }, {
   accounts : 0
 })