

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.

# $Numéro du document
<a name="documentNumber"></a>

Nouveau depuis la version 8.0.2.

L'opérateur de `$documentNumber` fenêtre d'Amazon DocumentDB renvoie un numéro séquentiel distinct pour chaque document de sa partition, conformément à l'ordre des `$setWindowFields` étapes`sortBy`. Contrairement à `$rank` et`$denseRank`, il ne traite pas spécialement les liens : chaque document reçoit un numéro unique (par exemple,`1, 2, 3, 4`), et les documents ayant des `sortBy` valeurs égales sont numérotés dans l'ordre dans lequel ils apparaissent. Il est spécifié dans le `output` champ de la `$setWindowFields` scène.

Il s'agit d'un opérateur de fenêtre qui n'est utilisé que dans la `$setWindowFields` scène.

**Paramètres**
+ `$documentNumber`prend un document vide `{}` comme valeur.
+ Il n'accepte pas de `window` cadre.
+ Cela nécessite exactement une `sortBy` clé dans l'`$setWindowFields`étape.

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

L'exemple suivant partitionne les documents par`game`, trie chaque partition par ordre décroissant et attribue `score` à chaque joueur un numéro de document séquentiel.

**Créez des exemples de documents **

```
db.players.insertMany([
  { _id: 1, game: "A", player: "Alice", score: 90 },
  { _id: 2, game: "A", player: "Bob", score: 85 },
  { _id: 3, game: "A", player: "Carol", score: 85 },
  { _id: 4, game: "A", player: "Dave", score: 70 },
  { _id: 5, game: "B", player: "Erin", score: 95 },
  { _id: 6, game: "B", player: "Frank", score: 80 }
]);
```

**Exemple de requête **

```
db.players.aggregate([
  {
    $setWindowFields: {
      partitionBy: "$game",
      sortBy: { score: -1 },
      output: {
        documentNumber: { $documentNumber: {} }
      }
    }
  }
]);
```

**Sortie**

```
[
  { "_id": 1, "game": "A", "player": "Alice", "score": 90, "documentNumber": 1 },
  { "_id": 2, "game": "A", "player": "Bob", "score": 85, "documentNumber": 2 },
  { "_id": 3, "game": "A", "player": "Carol", "score": 85, "documentNumber": 3 },
  { "_id": 4, "game": "A", "player": "Dave", "score": 70, "documentNumber": 4 },
  { "_id": 5, "game": "B", "player": "Erin", "score": 95, "documentNumber": 1 },
  { "_id": 6, "game": "B", "player": "Frank", "score": 80, "documentNumber": 2 }
]
```

Dans chaque `game` partition, chaque joueur reçoit un numéro séquentiel distinct dans l'`score`ordre décroissant. Bob et Carol sont à égalité `85` mais sont toujours numérotés `2` et `3` dans l'ordre dans lequel ils ont été rencontrés.

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

Pour afficher un exemple de code permettant d'utiliser l'`$documentNumber`opérateur dans la `$setWindowFields` scène, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser :

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

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

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

  try {
    await client.connect();
    const db = client.db('test');
    const players = db.collection('players');

    await players.insertMany([
      { _id: 1, game: "A", player: "Alice", score: 90 },
      { _id: 2, game: "A", player: "Bob", score: 85 },
      { _id: 3, game: "A", player: "Carol", score: 85 },
      { _id: 4, game: "A", player: "Dave", score: 70 },
      { _id: 5, game: "B", player: "Erin", score: 95 },
      { _id: 6, game: "B", player: "Frank", score: 80 }
    ]);

    const result = await players.aggregate([
      {
        $setWindowFields: {
          partitionBy: "$game",
          sortBy: { score: -1 },
          output: {
            documentNumber: { $documentNumber: {} }
          }
        }
      }
    ]).toArray();

    console.log(result);
  } finally {
    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')

    try:
        db = client['test']
        players = db['players']

        players.insert_many([
            { '_id': 1, 'game': 'A', 'player': 'Alice', 'score': 90 },
            { '_id': 2, 'game': 'A', 'player': 'Bob', 'score': 85 },
            { '_id': 3, 'game': 'A', 'player': 'Carol', 'score': 85 },
            { '_id': 4, 'game': 'A', 'player': 'Dave', 'score': 70 },
            { '_id': 5, 'game': 'B', 'player': 'Erin', 'score': 95 },
            { '_id': 6, 'game': 'B', 'player': 'Frank', 'score': 80 }
        ])

        result = list(players.aggregate([
            {
                '$setWindowFields': {
                    'partitionBy': '$game',
                    'sortBy': { 'score': -1 },
                    'output': {
                        'documentNumber': { '$documentNumber': {} }
                    }
                }
            }
        ]))

        print(result)
    finally:
        client.close()

example()
```

------