$redact - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$redact

La fase di $redact aggregazione in Amazon DocumentDB viene utilizzata per includere o escludere selettivamente contenuti dai documenti di output in base ai valori dei campi specificati. Ciò è particolarmente utile in scenari in cui è necessario controllare la visibilità dei dati sensibili in base ai livelli di accesso o alle autorizzazioni degli utenti.

Parametri

  • $cond: espressione che restituisce uno $$KEEP o $$DESCEND più campi del documento. $$PRUNE

  • $$KEEP: mantiene il campo corrente nel documento di output.

  • $$PRUNE: rimuove il campo corrente dal documento di output.

  • $$DESCEND: applica in modo ricorsivo lo $redact stage al campo corrente, che è un oggetto o una matrice.

Esempio (MongoDB Shell)

In questo esempio, useremo lo $redact stage per filtrare gli ordini in base al loro stato, mostrando solo gli ordini con valori di stato specifici.

Crea documenti di esempio

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

Esempio di query

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

Output

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

In questo esempio, lo $redact stage controlla il valore del status campo in ogni documento. Se status è «spedito» o «in elaborazione», il documento viene conservato ($$KEEP). Altrimenti, il documento viene eliminato ()$$PRUNE.

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $redact comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

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