sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB:cómo encontrar un documento por una identificación dentro de un documento anidado

Utilice la notación de puntos:

Cuando el campo contiene un documento incrustado, una consulta puede especificar una coincidencia exacta en el documento incrustado o especificar una coincidencia por campos individuales en el documento incrustado utilizando la notación de puntos.

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

Si necesita generar solo la parte de una matriz donde tiene su _id, necesita usar dólar en la proyección

El operador posicional $ limita el contenido de un resultado de la consulta para que contenga solo el primer elemento que coincida con el documento de consulta.

y su consulta se vería así:

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

PD si necesita el resultado como en sus preguntas modificadas, use esto:

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