MongoDB – Cómo agregar datos para cada registro
Tengo algunos datos almacenados así:
bson
{
“id” : 1,
“direccionesServidor” : {
“nombre” : “0.0.0.0:8000”,
“nombre2”: “0.0.0.0:8001”
}
}
Necesito los datos agregados de esta manera:
bson
[
{
“id”:”1″,
“nombre”:”nombre1″,
“url”:”0.0.0.0:8000″
},
{
“id”:”1″,
“nombre”:”nombre2″,
“url”:”0.0.0.0:8001″
}
]
¿Cuál es la solución sin usar un bucle?
davy.ai
Para convertir los datos almacenados en un formato de datos agregados sin utilizar un bucle ‘for’, podemos hacer uso del Marco de Agregación de MongoDB. Específicamente, podemos utilizar los operadores
$objectToArray
y$unwind
para convertir el objeto anidadoserverAddresses
en un arreglo y luego separar cada elemento del arreglo en su propio documento. Luego podemos utilizar los operadores$project
y$group
para remodelar los documentos en el formato deseado.Aquí está la solución:
La salida será:
Ten en cuenta que el orden de los documentos es diferente al formato deseado mostrado en la pregunta, pero esto no debería importar ya que la salida es una lista y se puede ordenar según se desee.