$redact - Amazon DocumentDB

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

$redact

Tahap $redact agregasi di Amazon DocumentDB digunakan untuk secara selektif menyertakan atau mengecualikan konten dari dokumen keluaran berdasarkan nilai bidang tertentu. Ini sangat berguna dalam skenario di mana Anda perlu mengontrol visibilitas data sensitif berdasarkan tingkat akses atau izin pengguna.

Parameter

  • $cond: Ekspresi yang mengevaluasi salah satu$$KEEP,$$PRUNE, atau $$DESCEND untuk setiap bidang dalam dokumen.

  • $$KEEP: Mempertahankan bidang saat ini dalam dokumen output.

  • $$PRUNE: Menghapus bidang saat ini dari dokumen output.

  • $$DESCEND: Secara rekursif menerapkan $redact tahap ke bidang saat ini, yang merupakan objek atau array.

Contoh (MongoDB Shell)

Dalam contoh ini, kita akan menggunakan $redact tahap untuk memfilter pesanan berdasarkan statusnya, hanya menampilkan pesanan dengan nilai status tertentu.

Buat dokumen sampel

db.orders.insert([ { "_id": 1, "status": "shipped", "customer": "Carlos Salazar", "total": 150.00, "date": "2025-01-15" }, { "_id": 2, "status": "processing", "customer": "Saanvi Sarkar", "total": 89.99, "date": "2025-01-20" }, { "_id": 3, "status": "cancelled", "customer": "Zhang Wei", "total": 220.50, "date": "2025-01-18" } ])

Contoh kueri

db.orders.aggregate([ { $redact: { $cond: { if: { $in: ["$status", ["shipped", "processing"]] }, then: "$$KEEP", else: "$$PRUNE" } } } ])

Keluaran

[ { _id: 1, status: 'shipped', customer: 'Carlos Salazar', total: 150, date: '2025-01-15' }, { _id: 2, status: 'processing', customer: 'Saanvi Sarkar', total: 89.99, date: '2025-01-20' } ]

Dalam contoh ini, $redact tahap memeriksa nilai status bidang di setiap dokumen. Jika “statusdikirim” atau “diproses”, dokumen disimpan ($$KEEP). Jika tidak, dokumen dipangkas ($$PRUNE).

Contoh kode

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

Node.js
const { MongoClient } = require('mongodb'); async function example() { 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 collection = db.collection('orders'); const result = await collection.aggregate([ { $redact: { $cond: { if: { $in: ['$status', ['shipped', 'processing']] }, then: '$$KEEP', else: '$$PRUNE' } } } ]).toArray(); console.log(result); client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] collection = db['orders'] result = list(collection.aggregate([ { '$redact': { '$cond': { 'if': { '$in': ['$status', ['shipped', 'processing']] }, 'then': '$$KEEP', 'else': '$$PRUNE' } } } ])) print(result) client.close() example()