

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.

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

Nouveau depuis la version 5.0.

Non pris en charge par le cluster Elastic.

L'`$first`opérateur d'Amazon DocumentDB renvoie le premier document d'un ensemble groupé de documents. Il est couramment utilisé dans les pipelines d'agrégation pour récupérer le premier document correspondant à une condition spécifique.

**Paramètres**
+ `expression`: expression à renvoyer comme première valeur de chaque groupe.

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

L'exemple suivant illustre l'utilisation de l'`$first`opérateur pour récupérer la première valeur d'élément rencontrée pour chaque catégorie lors de l'agrégation.

Remarque : `$first` renvoie le premier document en fonction de l'ordre actuel des documents dans le pipeline. Pour garantir une commande spécifique (par exemple, date limite, prix, etc.), une `$sort` étape doit être utilisée avant l'`$group`étape.

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

```
db.products.insertMany([
  { _id: 1, item: "abc", price: 10, category: "food" },
  { _id: 2, item: "jkl", price: 20, category: "food" },
  { _id: 3, item: "xyz", price: 5, category: "toy" },
  { _id: 4, item: "abc", price: 5, category: "toy" }
]);
```

**Exemple de requête**

```
db.products.aggregate([
  { $group: { _id: "$category", firstItem: { $first: "$item" } } }
]);
```

**Sortie**

```
[
  { "_id" : "food", "firstItem" : "abc" },
  { "_id" : "toy", "firstItem" : "xyz" }
]
```

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

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

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

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

async function example() {
  const uri = 'mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false';
  const client = new MongoClient(uri);

  try {
    await client.connect();

    const db = client.db('test');
    const collection = db.collection('products');

    const result = await collection.aggregate([
      { $group: { _id: "$category", firstItem: { $first: "$item" } } }
    ]).toArray();

    console.log(result);

  } catch (error) {
    console.error('Error:', error);
  } finally {
    await client.close();
  }
}

example();
```

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

```
from pymongo import MongoClient
from pprint import pprint

def example():
    client = None
    try:
        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['products']

        result = list(collection.aggregate([
            { '$group': { '_id': '$category', 'firstItem': { '$first': '$item' } } }
        ]))

        pprint(result)

    except Exception as e:
        print(f"An error occurred: {e}")

    finally:
        if client:
            client.close()

example()
```

------