Consulta de agregado de MongoDB en un array de objetos que contiene el id de múltiples colecciones.
Hola, soy nuevo en mongo y a continuación se muestra cómo se ve mi colección llamada termSet ahora. Tengo 2 colecciones separadas llamadas termsGroup y terms, a las cuales se hace referencia mediante los siguientes identificadores. Quiero ejecutar una búsqueda y mantener la estructura de la matriz tal como está. Intenté una búsqueda general con unwind, puedo obtener los detalles por separado para termGroup y terms, pero luego pierdo la estructura de matriz y no encuentro la forma de devolver la colección a su forma original.
Mi tubería actual, la colección está demasiado anidada:
{ $unwind: ‘$location.versions.types.termSet’ },
{
$lookup: {
from: TermGroup.collection.name,
localField: ‘location.versions.types.termSet.termGroup’,
foreignField: ‘_id’,
as: ‘termGroupData’,
},
},
{
$lookup: {
from: Term.collection.name,
localField: ‘location.versions.types.termSet.terms’,
foreignField: ‘_id’,
as: ‘termsData’,
},
}
davy.ai
Para mantener la estructura de matriz de la colección “termSet” al utilizar la búsqueda, puedes probar la siguiente secuencia de comandos:
Esta secuencia de comandos primero realiza una búsqueda en la colección “termsGroup” para obtener los detalles del grupo de términos, y luego otra búsqueda en la colección “terms” para obtener los detalles del término. Luego fusiona los datos recuperados con los documentos originales en “termSet” utilizando el operador
$map
y el operador$mergeObjects
. Finalmente, utiliza el operador$addFields
para actualizar el campo “termSet” con los nuevos datos.¡Espero que esto sea de ayuda!