$redact - Amazon DocumentDB

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

$redact

O estágio $redact de agregação no Amazon DocumentDB é usado para incluir ou excluir seletivamente conteúdo dos documentos de saída com base nos valores dos campos especificados. Isso é particularmente útil em cenários em que você precisa controlar a visibilidade de dados confidenciais com base nos níveis de acesso ou nas permissões do usuário.

Parâmetros

  • $cond: uma expressão que é avaliada como $$KEEP$$PRUNE, ou $$DESCEND para cada campo no documento.

  • $$KEEP: mantém o campo atual no documento de saída.

  • $$PRUNE: remove o campo atual do documento de saída.

  • $$DESCEND: aplica recursivamente o $redact estágio ao campo atual, que é um objeto ou matriz.

Exemplo (MongoDB Shell)

Neste exemplo, usaremos o $redact estágio para filtrar pedidos com base em seu status, mostrando somente pedidos com valores de status específicos.

Crie documentos de amostra

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

Exemplo de consulta

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

Saída

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

Neste exemplo, o $redact estágio verifica o valor do status campo em cada documento. Se status for “enviado” ou “processado”, o documento será mantido ($$KEEP). Caso contrário, o documento será removido ($$PRUNE).

Exemplos de código

Para ver um exemplo de código para usar o $redact comando, escolha a guia do idioma que você deseja 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()