$redact - Amazon DocumentDB

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

$redact

L'étape d'$redactagrégation dans Amazon DocumentDB est utilisée pour inclure ou exclure de manière sélective le contenu des documents de sortie en fonction des valeurs des champs spécifiés. Cela est particulièrement utile dans les scénarios où vous devez contrôler la visibilité des données sensibles en fonction des niveaux d'accès ou des autorisations des utilisateurs.

Paramètres

  • $cond: expression qui évalue soit pour $$KEEP$$PRUNE, soit $$DESCEND pour chaque champ du document.

  • $$KEEP: conserve le champ actuel dans le document de sortie.

  • $$PRUNE: Supprime le champ actuel du document de sortie.

  • $$DESCEND: applique la $redact scène de manière récursive au champ actuel, qui est un objet ou un tableau.

Exemple (MongoDB Shell)

Dans cet exemple, nous allons utiliser l'$redactétape pour filtrer les commandes en fonction de leur statut, en n'affichant que les commandes avec des valeurs de statut spécifiques.

Création d'exemples de documents

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

Exemple de requête

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

Sortie

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

Dans cet exemple, l'$redactétape vérifie la valeur du status champ dans chaque document. S'il status est « expédié » ou « en cours de traitement », le document est conservé ($$KEEP). Dans le cas contraire, le document est élagué ($$PRUNE).

Exemples de code

Pour afficher un exemple de code relatif à l'utilisation de la $redact commande, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

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