

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.

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

L'`$$DESCEND`opérateur dans Amazon DocumentDB est un opérateur de tableau positionnel spécial utilisé au cours de la `$redact` phase de pipeline. Il indique au pipeline d'agrégation de descendre dans le document actuel et de traiter tous les champs, quel que soit leur niveau d'imbrication.

Lorsque le `$redact` stage rencontre l'`$$DESCEND`opérateur, tous les champs du document actuel restent visibles et les traitent plus loin dans le pipeline. Cela est utile lorsque vous souhaitez supprimer ou affiner de manière sélective certains champs en fonction d'une condition, tout en conservant la structure du document.

**Paramètres**

Aucune.

## Exemple (MongoDB Shell)
<a name="DESCEND-examples"></a>

Dans cet exemple, nous allons utiliser la `$redact` scène avec l'`$$DESCEND`opérateur pour afficher de manière sélective les documents dont le `code` champ est égal à « Reg ».

**Création d'exemples de documents**

```
db.patient.insertMany([
  { "_id": 1, "code": "Emp", "patient": "John Doe", "DOB": "1/1/1980", "Hospital": "Main" },
  { "_id": 2, "code": "Reg", "patient": "Jane Doe", "DOB": "3/27/1989", "Hospital": "Cherry Hill" },
  { "_id": 3, "code": "Emp", "patient": "Bob Smith", "DOB": "6/15/1975", "Hospital": "Downtown" }
]);
```

**Exemple de requête**

```
db.patient.aggregate([
  { $redact: {
    $cond: {
      if: { $eq: ["Reg", "$code"] },
      then: "$$DESCEND",
      else: "$$PRUNE"
    }
  }}
]);
```

**Sortie**

```
{
  "_id": 2,
  "code": "Reg",
  "patient": "Jane Doe",
  "DOB": "3/27/1989",
  "Hospital": "Cherry Hill"
}
```

## Exemples de code
<a name="DESCEND-code"></a>

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

------
#### [ Node.js ]

```
const { MongoClient } = require('mongodb');

async function redactPatients() {
  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('patient');

  const result = await collection.aggregate([
    { $redact: {
      $cond: {
        if: { $eq: ["Reg", "$code"] },
        then: "$$DESCEND",
        else: "$$PRUNE"
      }
    }}
  ]).toArray();

  console.log(result);
  client.close();
}

redactPatients();
```

------
#### [ Python ]

```
from pymongo import MongoClient

def redact_patients():
    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.patient

    result = list(collection.aggregate([
        { "$redact": {
            "$cond": {
                "if": { "$eq": ["Reg", "$code"] },
                "then": "$$DESCEND",
                "else": "$$PRUNE"
            }
        }}
    ]))

    print(result)
    client.close()

redact_patients()
```

------