

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.

# $std DevPop
<a name="stdDevPop"></a>

Nouveau depuis la version 8.0.1.

Dans Amazon DocumentDB, `$stdDevPop` l'opérateur calcule l'écart type de population des valeurs numériques. En tant qu'accumulateur, il calcule l'écart type de population entre les documents d'un groupe au `$group` stade d'un pipeline d'agrégation. En tant qu'expression, il calcule l'écart type de population d'un tableau de nombres. L'écart-type de la population utilise N comme diviseur (non N-1). Non-numeric les valeurs sont ignorées. S'il n'y a pas de valeurs numériques, elle est renvoyée`null`. S'il n'y a qu'une seule valeur numérique, elle est renvoyée`0`.

**Paramètres**
+ `expression`: expression qui se résout en une valeur numérique ou en un tableau de valeurs numériques.

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

L'exemple suivant montre comment utiliser l'`$stdDevPop`opérateur pour calculer l'écart type des scores de la population par sujet.

**Créez des exemples de documents **

```
db.scores.insertMany([
  { subject: "math", score: 60 },
  { subject: "math", score: 75 },
  { subject: "math", score: 85 },
  { subject: "math", score: 92 },
  { subject: "math", score: 78 },
  { subject: "science", score: 55 },
  { subject: "science", score: 70 },
  { subject: "science", score: 82 },
  { subject: "science", score: 91 },
  { subject: "science", score: 67 }
]);
```

**Exemple de requête **

```
db.scores.aggregate([
  { $group: {
      _id: "$subject",
      stdDev: { $stdDevPop: "$score" }
    }}
]);
```

**Sortie**

```
[
  { "_id": "math", "stdDev": 10.75174404457249 },
  { "_id": "science", "stdDev": 12.441864811996632 }
]
```

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

L'`$stdDevPop`opérateur peut également être utilisé comme expression au sein d'une `$project` étape pour calculer l'écart type de population d'un champ de tableau.

**Créez des exemples de documents **

```
db.experiments.insertMany([
  { _id: 1, measurements: [10, 12, 14, 16, 18] },
  { _id: 2, measurements: [5, 5, 5, 5, 5] },
  { _id: 3, measurements: [2, 4, 6, 8, 10] }
]);
```

**Exemple de requête **

```
db.experiments.aggregate([
  { $project: {
      stdDev: { $stdDevPop: "$measurements" }
    }}
]);
```

**Sortie**

```
[
  { "_id": 1, "stdDev": 2.8284271247461903 },
  { "_id": 2, "stdDev": 0 },
  { "_id": 3, "stdDev": 2.8284271247461903 }
]
```

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

Pour afficher un exemple de code d'utilisation de l'`$stdDevPop`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: stdDevPop across grouped documents
    const scores = db.collection('scores');
    const accumulatorResult = await scores.aggregate([
      { $group: {
          _id: "$subject",
          stdDev: { $stdDevPop: "$score" }
        }}
    ]).toArray();
    console.log('Accumulator result:', accumulatorResult);

    // Expression usage: stdDevPop of an array field
    const experiments = db.collection('experiments');
    const expressionResult = await experiments.aggregate([
      { $project: {
          stdDev: { $stdDevPop: "$measurements" }
        }}
    ]).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: stdDevPop across grouped documents
        scores = db['scores']
        accumulator_result = list(scores.aggregate([
            { '$group': {
                '_id': '$subject',
                'stdDev': { '$stdDevPop': '$score' }
            }}
        ]))
        print('Accumulator result:', accumulator_result)

        # Expression usage: stdDevPop of an array field
        experiments = db['experiments']
        expression_result = list(experiments.aggregate([
            { '$project': {
                'stdDev': { '$stdDevPop': '$measurements' }
            }}
        ]))
        print('Expression result:', expression_result)

    finally:
        client.close()

example()
```

------