$redact - 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.

$redact

La etapa de $redact agregación de Amazon DocumentDB se utiliza para incluir o excluir contenido de los documentos de salida de forma selectiva en función de los valores de los campos especificados. Esto resulta especialmente útil en situaciones en las que necesita controlar la visibilidad de los datos confidenciales en función de los niveles de acceso o los permisos de los usuarios.

Parámetros

  • $cond: una expresión que da como resultado uno de los campos del documento o $$DESCEND para cada uno de ellos. $$KEEP $$PRUNE

  • $$KEEP: conserva el campo actual del documento de salida.

  • $$PRUNE: elimina el campo actual del documento de salida.

  • $$DESCEND: aplica el $redact escenario de forma recursiva al campo actual, que es un objeto o una matriz.

Ejemplo (MongoDB Shell)

En este ejemplo, utilizaremos la $redact etapa para filtrar los pedidos en función de su estado y mostrar solo los pedidos con valores de estado específicos.

Crea documentos de muestra

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

Ejemplo de consulta

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

Salida

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

En este ejemplo, la $redact etapa comprueba el valor del status campo en cada documento. Si status está «enviado» o «procesado», el documento se conserva ($$KEEP). De lo contrario, el documento se borra ($$PRUNE).

Ejemplos de código

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

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