

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.

# $ médian
<a name="median"></a>

Nouveau depuis la version 8.0.1.

L'`$median`opérateur d'Amazon DocumentDB calcule la valeur médiane des données numériques. En tant qu'accumulateur, il calcule la médiane des valeurs numériques des documents d'un groupe au `$group` stade d'un pipeline d'agrégation. En tant qu'expression, il calcule la médiane d'un tableau de nombres.

**Paramètres**
+ `input`: expression qui se résout en une valeur numérique ou en un tableau de valeurs numériques.
+ `method`: chaîne spécifiant la méthode de calcul. Actuellement, seul `"approximate"` est pris en charge, qui utilise l'algorithme t-digest.

## Comportement
<a name="median-behavior"></a>

La `"approximate"` méthode utilise l'algorithme t-digest pour calculer une médiane approximative. Le résultat est une valeur existante de l'ensemble de données plutôt qu'une interpolation entre les valeurs. La précision s'améliore à mesure que le nombre de points de données augmente.

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

L'exemple suivant montre comment utiliser l'`$median`opérateur pour calculer le score médian du test par classe.

**Créez des exemples de documents **

```
db.students.insertMany([
  { class: "A", score: 72 },
  { class: "A", score: 85 },
  { class: "A", score: 90 },
  { class: "A", score: 68 },
  { class: "A", score: 95 },
  { class: "B", score: 80 },
  { class: "B", score: 75 },
  { class: "B", score: 92 },
  { class: "B", score: 88 },
  { class: "B", score: 70 }
]);
```

**Exemple de requête **

```
db.students.aggregate([
  { $group: {
      _id: "$class",
      medianScore: { $median: { input: "$score", method: "approximate" } }
    }}
]);
```

**Sortie**

```
[
  { "_id": "A", "medianScore": 85 },
  { "_id": "B", "medianScore": 80 }
]
```

## Exemple d'utilisation d'expressions (MongoDB Shell)
<a name="median-expression-examples"></a>

L'`$median`opérateur peut également être utilisé comme expression au sein d'une `$project` étape pour calculer la médiane d'un champ de tableau.

**Créez des exemples de documents **

```
db.surveys.insertMany([
  { _id: 1, ratings: [3, 5, 7, 9, 2] },
  { _id: 2, ratings: [10, 20, 30, 40, 50] },
  { _id: 3, ratings: [1, 1, 2, 3, 5] }
]);
```

**Exemple de requête **

```
db.surveys.aggregate([
  { $project: {
      medianRating: { $median: { input: "$ratings", method: "approximate" } }
    }}
]);
```

**Sortie**

```
[
  { "_id": 1, "medianRating": 5 },
  { "_id": 2, "medianRating": 30 },
  { "_id": 3, "medianRating": 2 }
]
```

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

Pour afficher un exemple de code d'utilisation de l'`$median`opérateur, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser. Les exemples suivants montrent à la fois l'utilisation de l'accumulateur (in`$group`) et l'utilisation de l'expression (in`$project`) :

------
#### [ 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');

    // Accumulator usage: median across grouped documents
    const students = db.collection('students');
    const accumulatorResult = await students.aggregate([
      { $group: {
          _id: "$class",
          medianScore: { $median: { input: "$score", method: "approximate" } }
        }}
    ]).toArray();
    console.log('Accumulator result:', accumulatorResult);

    // Expression usage: median of an array field
    const surveys = db.collection('surveys');
    const expressionResult = await surveys.aggregate([
      { $project: {
          medianRating: { $median: { input: "$ratings", method: "approximate" } }
        }}
    ]).toArray();
    console.log('Expression result:', expressionResult);

  } 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']

        # Accumulator usage: median across grouped documents
        students = db['students']
        accumulator_result = list(students.aggregate([
            { '$group': {
                '_id': '$class',
                'medianScore': { '$median': { 'input': '$score', 'method': 'approximate' } }
            }}
        ]))
        print('Accumulator result:', accumulator_result)

        # Expression usage: median of an array field
        surveys = db['surveys']
        expression_result = list(surveys.aggregate([
            { '$project': {
                'medianRating': { '$median': { 'input': '$ratings', 'method': 'approximate' } }
            }}
        ]))
        print('Expression result:', expression_result)

    finally:
        client.close()

example()
```

------