

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

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

Tahap `$redact` agregasi di Amazon DocumentDB digunakan untuk secara selektif menyertakan atau mengecualikan konten dari dokumen keluaran berdasarkan nilai bidang tertentu. Ini sangat berguna dalam skenario di mana Anda perlu mengontrol visibilitas data sensitif berdasarkan tingkat akses atau izin pengguna.

**Parameter**
+ `$cond`: Ekspresi yang mengevaluasi salah satu`$$KEEP`,`$$PRUNE`, atau `$$DESCEND` untuk setiap bidang dalam dokumen.
+ `$$KEEP`: Mempertahankan bidang saat ini dalam dokumen output.
+ `$$PRUNE`: Menghapus bidang saat ini dari dokumen output.
+ `$$DESCEND`: Secara rekursif menerapkan `$redact` tahap ke bidang saat ini, yang merupakan objek atau array.

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

Dalam contoh ini, kita akan menggunakan `$redact` tahap untuk memfilter pesanan berdasarkan statusnya, hanya menampilkan pesanan dengan nilai status tertentu.

**Buat dokumen sampel**

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

**Contoh kueri**

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

**Keluaran**

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

Dalam contoh ini, `$redact` tahap memeriksa nilai `status` bidang di setiap dokumen. Jika “`status`dikirim” atau “diproses”, dokumen disimpan (`$$KEEP`). Jika tidak, dokumen dipangkas (`$$PRUNE`).

## Contoh kode
<a name="redact-code"></a>

Untuk melihat contoh kode untuk menggunakan `$redact` perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

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

------