

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.

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

L'`$project`opérateur d'Amazon DocumentDB vous permet d'inclure ou d'exclure de manière sélective des champs des documents de sortie, de transmettre des valeurs à l'étape suivante du pipeline et de calculer de nouveaux champs à partir des valeurs des documents d'entrée.

**Paramètres**
+ `field`: Le champ à inclure ou à exclure des documents de sortie peut être un chemin de champ (par exemple, « a.b.c »).
+ `1`ou `true` : inclut le champ dans la sortie.
+ `0`ou `false` : exclut le champ de la sortie.

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

L'exemple suivant illustre l'utilisation de l'`$project`opérateur sur la collection des étudiants.

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

```
db.students.insertMany([
  { "_id": 1, "name": "Alejandro Rosalez", "math": 85, "science": 92, "grade": "A" },
  { "_id": 2, "name": "Carlos Salazar", "math": 78, "science": 84, "grade": "B" },
  { "_id": 3, "name": "Nikhil Jayashankar", "math": 95, "science": 89, "grade": "A" },
  { "_id": 4, "name": "Shirley Rodriguez", "math": 72, "science": 76, "grade": "B" }
  ]);
```

Cette requête inclut uniquement les `math` champs `name` et dans la sortie. Le `_id` champ est inclus par défaut sauf exclusion explicite.

```
db.students.aggregate([
  { $project: { "name": 1, "math": 1 } }
])
```

**Sortie**

```
{ _id: 1, name: "Alejandro Rosalez", math: 85 }
{ _id: 2, name: "Carlos Salazar", math: 78 }
{ _id: 3, name: "Nikhil Jayashankar", math: 95 }
{ _id: 4, name: "Shirley Rodriguez", math: 72 }
```

Cette requête exclut les `_id` champs `grade` et de la sortie, affichant tous les autres champs (`name`,`math`,`science`).

```
db.students.aggregate([
  { $project: { "grade": 0, "_id": 0 } }
])
```

**Sortie**

```
{ name: "Alejandro Rosalez", math: 85, science: 92 }
{ name: "Carlos Salazar", math: 78, science: 84 }
{ name: "Nikhil Jayashankar", math: 95, science: 89 }
{ name: "Shirley Rodriguez", math: 72, science: 76 }
```

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

Pour afficher un exemple de code relatif à l'utilisation de la `$project` 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('students');

  const result = await collection.aggregate([
    { $project: { "name": 1, "math": 1 } }
  ]).toArray();
  console.log(result);

  await 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['students']

    result = list(collection.aggregate([
        { '$project': { 'name': 1, 'math': 1 } }
    ]))
    print(result)

    client.close()

example()
```

------