Documento 1:
{ "data": { "id": "123456", "name": "abc", "value": 1 } }Rendimiento esperado-
{ "abc": { "id": "123456", "name": "abc", "value": 1 } } Explicación: cómo podemos reemplazar la raíz con el valor de " name" , verifique el resultado esperado, cualquiera que sea el valor del "name" , se convierte en el nivel raíz. y tengo varios documentos. Gracias por adelantado.
Puede lograr esto a través de la agregación $project . Debería ser algo como esto:
{ $project: { "$data.name": "$data" } }Mongo no permite que los nombres de campo comiencen con $ , lo que significa que no puede definir un nombre de clave dinámica.
Tendrá que sortear esta restricción jugando con la estructura de datos, aquí hay un ejemplo de cómo lograr esto con $arrayToObject
db.collection.aggregate([ { "$replaceRoot": { "newRoot": { "$arrayToObject": [ [ { k: "$data.name", v: "$data" } ] ] } } } ])