Si solo quieres uno entonces MongoDB tiene "notación de puntos" para acceder a elementos anidados:
ejemplo @sqldat.com " })Y esto devolverá documentos que coincidan con:
Para más ese campo como condición, use $elemMatch
operador
db.collection.find( { "a":{ "$elemMatch":{ "correo electrónico":"[email protected]
", "nombre":"dominios", } }})
Y puedes "proyectar" un sencillo coincidencia para devolver ese elemento:
ejemplo @sqldat.com " },{ "a.$":1 })Pero si esperas más que uno elemento para que coincida, luego usa el marco de agregación:
db.collection.aggregate([ // Coincide con los "documentos" que contienen este { "$match":{ "to.email":"[email protected]
" } }, // Desnormaliza la matriz { "$unwind":"$to" }, // Coincide solo con los elementos que coinciden { "$match":{ "to.email":"[email protected]
" } }, // Tal vez incluso volver a agrupar a un documento singular { "$group":{ "_id":"$_id", "from_name":{ "$first":"$name" }, "to":{ "$push":"$to" }, "subject":{ "$first":"$subject" } }}])
Todas las formas divertidas de hacer coincidir y/o "filtrar" el contenido de una matriz para encontrar coincidencias si es necesario.