

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# \$1redact
<a name="redact"></a>

Die `$redact` Aggregationsphase in Amazon DocumentDB wird verwendet, um Inhalte anhand der Werte der angegebenen Felder selektiv in die Ausgabedokumente ein- oder auszuschließen. Dies ist besonders nützlich in Szenarien, in denen Sie die Sichtbarkeit sensibler Daten auf der Grundlage von Zugriffsebenen oder Benutzerberechtigungen kontrollieren müssen.

**Parameter**
+ `$cond`: Ein Ausdruck, der entweder `$$KEEP``$$PRUNE`, oder `$$DESCEND` für jedes Feld im Dokument ausgewertet wird.
+ `$$KEEP`: Behält das aktuelle Feld im Ausgabedokument bei.
+ `$$PRUNE`: Entfernt das aktuelle Feld aus dem Ausgabedokument.
+ `$$DESCEND`: Wendet den `$redact` Schritt rekursiv auf das aktuelle Feld an, bei dem es sich um ein Objekt oder ein Array handelt.

## Beispiel (MongoDB Shell)
<a name="redact-examples"></a>

In diesem Beispiel verwenden wir die `$redact` Phase, um Bestellungen nach ihrem Status zu filtern und nur Bestellungen mit bestimmten Statuswerten anzuzeigen.

**Erstellen Sie Beispieldokumente**

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

**Beispiel für eine Abfrage**

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

**Ausgabe**

```
[
  { _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 diesem Beispiel überprüft die `$redact` Phase den Wert des `status` Felds in jedem Dokument. Wenn `status` es sich um „Versand“ oder „Bearbeitung“ handelt, wird das Dokument aufbewahrt (`$$KEEP`). Andernfalls wird das Dokument beschnitten ()`$$PRUNE`.

## Codebeispiele
<a name="redact-code"></a>

Um ein Codebeispiel für die Verwendung des `$redact` Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

------
#### [ 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()
```

------