$ RAÍZ - Amazon DocumentDB

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

$ RAÍZ

El $ROOT operador de Amazon DocumentDB se utiliza para hacer referencia a todo el documento de entrada dentro de una canalización de agregación. Le permite acceder a todo el documento y manipularlo, incluidos todos sus campos y estructuras anidados.

Parámetros

Ninguno

Ejemplo (MongoDB Shell)

En este ejemplo se muestra cómo $ROOT crear un registro de auditoría que capture el documento original completo junto con los metadatos sobre el momento en que se procesó.

Cree documentos de muestra

db.orders.insertMany([ { _id: 1, orderId: "ORD-2024-001", customer: "María García", email: "maría@example.com", items: [ { product: "Laptop", quantity: 1, price: 1299.99 } ], totalAmount: 1299.99 }, { _id: 2, orderId: "ORD-2024-002", customer: "Arnav Desai", email: "arnav@example.com", items: [ { product: "Mouse", quantity: 2, price: 29.99 }, { product: "Keyboard", quantity: 1, price: 89.99 } ], totalAmount: 149.97 } ]);

Ejemplo de consulta

db.orders.aggregate([ { $project: { processedAt: new Date(), originalDocument: "$$ROOT", summary: { $concat: [ "Order ", "$orderId", " for ", "$customer", " - Total: $", { $toString: "$totalAmount" } ] } } } ]);

Salida

[ { _id: 1, processedAt: ISODate('2025-11-24T20:43:51.492Z'), originalDocument: { _id: 1, orderId: 'ORD-2024-001', customer: 'María García', email: 'maría@example.com', items: [ { product: 'Laptop', quantity: 1, price: 1299.99 } ], totalAmount: 1299.99 }, summary: 'Order ORD-2024-001 for María García - Total: $1299.99' }, { _id: 2, processedAt: ISODate('2025-11-24T20:43:51.492Z'), originalDocument: { _id: 2, orderId: 'ORD-2024-002', customer: 'Arnav Desai', email: 'arnav@example.com', items: [ { product: 'Mouse', quantity: 2, price: 29.99 }, { product: 'Keyboard', quantity: 1, price: 89.99 } ], totalAmount: 149.97 }, summary: 'Order ORD-2024-002 for Arnav Desai - Total: $149.97' } ]

Ejemplos de código

Para ver un ejemplo de código para usar el $ROOT comando, elija la pestaña del idioma que desee usar:

Node.js
const { MongoClient } = require('mongodb'); async function createAuditLog() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const orders = db.collection('orders'); const result = await orders.aggregate([ { $project: { processedAt: new Date(), originalDocument: "$$ROOT", summary: { $concat: [ "Order ", "$orderId", " for ", "$customer", " - Total: $", { $toString: "$totalAmount" } ] } } } ]).toArray(); console.log(result); await client.close(); } createAuditLog();
Python
from pymongo import MongoClient from datetime import datetime def create_audit_log(): client = MongoClient('mongodb://username:password@docdb-cluster.cluster-123456789.us-east-1.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['orders'] result = list(collection.aggregate([ { '$project': { 'processedAt': datetime.now(), 'originalDocument': '$$ROOT', 'summary': { '$concat': [ "Order ", "$orderId", " for ", "$customer", " - Total: $", { '$toString': "$totalAmount" } ] } } } ])) print(result) client.close() create_audit_log()