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
Nouveau depuis la version 8.0.1.
Dans Amazon DocumentDB, l'$medianopérateur 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
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)
L'exemple suivant montre comment utiliser l'$medianopé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)
L'$medianopé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 }
]
Exemple d'utilisation d'un opérateur de fenêtre (MongoDB Shell)
Nouveau depuis la version 8.0.2.
L'$medianopérateur peut également être utilisé comme opérateur de fenêtre dans la $setWindowFields scène. Dans ce contexte, il calcule la médiane des valeurs numériques des 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.
Note
Lorsqu'il est utilisé comme opérateur de fenêtre dans$setWindowFields, $median est limité à 100 Mo de données intermédiaires. Une opération dépassant cette limite renvoie une erreur.
Créez des exemples de documents
db.temperatures.insertMany([ { _id: 1, city: "A", reading: 60 }, { _id: 2, city: "A", reading: 65 }, { _id: 3, city: "A", reading: 70 }, { _id: 4, city: "B", reading: 80 }, { _id: 5, city: "B", reading: 85 }, { _id: 6, city: "B", reading: 90 } ]);
Exemple de requête
L'exemple suivant partitionne les documents city et calcule la médiane de reading tous les documents de chaque partition.
db.temperatures.aggregate([ { $setWindowFields: { partitionBy: "$city", output: { medianReading: { $median: { input: "$reading", method: "approximate" }, window: { documents: ["unbounded", "unbounded"] } } } } } ]);
Sortie
[
{ "_id": 1, "city": "A", "reading": 60, "medianReading": 65 },
{ "_id": 2, "city": "A", "reading": 65, "medianReading": 65 },
{ "_id": 3, "city": "A", "reading": 70, "medianReading": 65 },
{ "_id": 4, "city": "B", "reading": 80, "medianReading": 85 },
{ "_id": 5, "city": "B", "reading": 85, "medianReading": 85 },
{ "_id": 6, "city": "B", "reading": 90, "medianReading": 85 }
]
Chaque document est augmenté de medianReading la médiane approximative de reading tous les documents de sa partition.
Exemples de code
Pour afficher un exemple de code d'utilisation de l'$medianopé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) :