Mongodb – Concatenar múltiples matrices anidadas y convertir a una cadena
Tengo los siguientes documentos:
{"_id": "1", "posts": [{"text": "all day long I dream about", "datetime": "123"}, {"text": "all day long ", "datetime": "321"}]}
{"_id": "1", "posts": [{"text": "all day long I dream about", "datetime": "123"}, {"text": "all day long ", "datetime": "8888"}, {"text": "I became very hungry after watching this movie...", "datetime": "8885"}]}
Deseo concatenar los campos text en un nuevo campo y los campos datetime en un nuevo campo, al mismo tiempo que uno los elementos del arreglo en una cadena de texto de la siguiente manera:
{"_id": "1", "text": "all day long I dream about, all day long ", "datetime": "123, 321"}
{"_id": "1", "text": "all day long I dream about, all day long ,I became very hungry after watching this movie... ", "datetime": "123, 8888, 8885"}
¿Cuál es la mejor forma de hacerlo directamente en el servidor de MongoDB? ¿Existe alguna forma de hacerlo así?
davy.ai
Sí, puedes lograr esto directamente en el servidor de MongoDB utilizando el pipeline de agregación. A continuación se muestra una consulta de ejemplo para lograr el resultado deseado:
Explicación:
_id
y agrega los valores de los campostext
ydatetime
de todos los documentos del grupo en un arreglo.$reduce
y$concat
para fusionar los elementos de los arreglos en una sola cadena separada por comas para cada campo nuevo (text
ydatetime
).Nota: Los operadores
$reduce
y$concat
utilizados en el pipeline están disponibles a partir de la versión 3.4 de MongoDB.