View a markdown version of this page

$ Median - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$ Median

Neu ab Version 8.0.1.

Der $median Operator in Amazon DocumentDB berechnet den Medianwert numerischer Daten. Als Akkumulator berechnet er in der Phase einer Aggregationspipeline den Median der numerischen Werte aller Dokumente innerhalb einer Gruppe. $group Als Ausdruck berechnet er den Median einer Reihe von Zahlen.

Parameter

  • input: Ein Ausdruck, der in einen numerischen Wert oder ein Array numerischer Werte aufgelöst wird.

  • method: Eine Zeichenfolge, die die Berechnungsmethode angibt. Derzeit "approximate" wird nur unterstützt, wobei der t-digest-Algorithmus verwendet wird.

Behavior

Die "approximate" Methode verwendet den T-Digest-Algorithmus, um einen ungefähren Median zu berechnen. Das Ergebnis ist ein vorhandener Wert aus dem Datensatz und nicht eine Interpolation zwischen Werten. Die Genauigkeit verbessert sich, wenn die Anzahl der Datenpunkte zunimmt.

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $median Operator verwendet wird, um den Medianwert des Testergebnisses pro Klasse zu berechnen.

Erstellen Sie Beispieldokumente

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 } ]);

Beispiel für eine Abfrage

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

Ausgabe

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

Beispiel für die Verwendung von Ausdrücken (MongoDB Shell)

Der $median Operator kann auch als Ausdruck innerhalb einer $project Stufe verwendet werden, um den Median eines Array-Feldes zu berechnen.

Erstellen Sie Beispieldokumente

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] } ]);

Beispiel für eine Abfrage

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

Ausgabe

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

Codebeispiele

Um ein Codebeispiel für die Verwendung des $median Operators anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten. Die folgenden Beispiele zeigen sowohl die Verwendung von Akkumulatoren (in$group) als auch die Verwendung von Ausdrücken (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()