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 DevSamp
Nouveau depuis la version 8.0.1.
Dans Amazon DocumentDB, $stdDevSamp l'opérateur calcule l'écart type de l'échantillon des valeurs numériques. En tant qu'accumulateur, il calcule l'écart type de l'échantillon 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 l'échantillon d'un tableau de nombres. L'écart type de l'échantillon est utilisé N-1 comme diviseur (correction de Bessel). Non-numeric les valeurs sont ignorées. S'il y a moins de deux valeurs numériques, il renvoienull.
Paramètres
-
expression: expression qui se résout en une valeur numérique ou en un tableau de valeurs numériques.
Exemple (MongoDB Shell)
L'exemple suivant montre comment utiliser l'$stdDevSampopérateur pour calculer l'écart type des scores de l'échantillon par sujet.
Créez des exemples de documents
db.scores.insertMany([ { subject: "math", score: 80 }, { subject: "math", score: 90 }, { subject: "math", score: 85 }, { subject: "math", score: 95 }, { subject: "science", score: 70 }, { subject: "science", score: 75 }, { subject: "science", score: 80 }, { subject: "science", score: 85 } ]);
Exemple de requête
db.scores.aggregate([ { $group: { _id: "$subject", stdDev: { $stdDevSamp: "$score" } }} ]);
Sortie
[
{ "_id": "math", "stdDev": 6.454972243679028 },
{ "_id": "science", "stdDev": 6.454972243679028 }
]
Exemple d'utilisation d'expressions (MongoDB Shell)
L'$stdDevSampopérateur peut également être utilisé comme expression au sein d'une $project étape pour calculer l'écart type de l'échantillon 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: { $stdDevSamp: "$measurements" } }} ]);
Sortie
[
{ "_id": 1, "stdDev": 3.1622776601683795 },
{ "_id": 2, "stdDev": 0 },
{ "_id": 3, "stdDev": 3.1622776601683795 }
]
Exemple d'utilisation d'un opérateur de fenêtre (MongoDB Shell)
Nouveau depuis la version 8.0.2.
L'$stdDevSampopérateur peut également être utilisé comme opérateur de fenêtre dans la $setWindowFields scène. Dans ce contexte, il renvoie l'exemple d'écart type de l'expression spécifiée pour les documents de chaque fenêtre. Vous spécifiez l'opérateur dans le output champ et définissez éventuellement les limites de la fenêtre à l'aide d'un window document.
Créez des exemples de documents
db.sensorReadings.insertMany([ { _id: 1, sensor: "A", time: 1, value: 2 }, { _id: 2, sensor: "A", time: 2, value: 4 }, { _id: 3, sensor: "A", time: 3, value: 6 }, { _id: 4, sensor: "B", time: 1, value: 10 }, { _id: 5, sensor: "B", time: 2, value: 12 } ]);
Exemple de requête
L'exemple suivant partitionne les documents parsensor, trie chaque partition par time et renvoie l'exemple d'valueécart type courant entre le début de la partition et le document actuel.
db.sensorReadings.aggregate([ { $setWindowFields: { partitionBy: "$sensor", sortBy: { time: 1 }, output: { runningStdDev: { $stdDevSamp: "$value", window: { documents: ["unbounded", "current"] } } } } } ]);
Sortie
[
{ "_id": 1, "sensor": "A", "time": 1, "value": 2, "runningStdDev": null },
{ "_id": 2, "sensor": "A", "time": 2, "value": 4, "runningStdDev": 1.4142135623730951 },
{ "_id": 3, "sensor": "A", "time": 3, "value": 6, "runningStdDev": 2 },
{ "_id": 4, "sensor": "B", "time": 1, "value": 10, "runningStdDev": null },
{ "_id": 5, "sensor": "B", "time": 2, "value": 12, "runningStdDev": 1.4142135623730951 }
]
Chaque document est augmenté de runningStdDev l'écart type de l'échantillon compris value dans sa partition jusqu'au document actuel inclus. Lorsque la fenêtre contient moins de deux valeurs (le premier document de chaque partition), $stdDevSamp renvoienull.
Exemples de code
Pour afficher un exemple de code d'utilisation de l'$stdDevSampopérateur, choisissez l'onglet correspondant à la langue que vous souhaitez utiliser. Les exemples suivants montrent l'utilisation de l'accumulateur (in$group), l'utilisation des expressions (in$project) et l'utilisation de l'opérateur de fenêtre (in$setWindowFields) :