$ AKAR - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

$ AKAR

$ROOTOperator di Amazon DocumentDB digunakan untuk mereferensikan seluruh dokumen input dalam pipeline agregasi. Ini memungkinkan Anda untuk mengakses dan memanipulasi dokumen lengkap, termasuk semua bidang dan struktur bersarangnya.

Parameter

Tidak ada

Contoh (MongoDB Shell)

Contoh ini menunjukkan penggunaan $ROOT untuk membuat log audit yang menangkap dokumen asli lengkap bersama dengan metadata tentang kapan diproses.

Buat dokumen sampel

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 } ]);

Contoh kueri

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

Keluaran

[ { _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' } ]

Contoh kode

Untuk melihat contoh kode untuk menggunakan $ROOT perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

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()