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

Cómo buscar subarreglos en MongoDB

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.