View a markdown version of this page

$median - Amazon DocumentDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

$median

Baru dari versi 8.0.1.

$medianOperator di Amazon DocumentDB menghitung nilai median data numerik. Sebagai akumulator, ia menghitung median nilai numerik di seluruh dokumen dalam grup dalam $group tahap pipeline agregasi. Sebagai ekspresi, ia menghitung median dari array angka.

Parameter

  • input: Ekspresi yang diselesaikan ke nilai numerik atau array nilai numerik.

  • method: Sebuah string yang menentukan metode perhitungan. Saat ini hanya "approximate" didukung, yang menggunakan algoritma t-Digest.

Perilaku

"approximate"Metode ini menggunakan algoritma t-Digest untuk menghitung median perkiraan. Hasilnya adalah nilai yang ada dari dataset bukan interpolasi antar nilai. Presisi meningkat seiring bertambahnya jumlah titik data.

Contoh (MongoDB Shell)

Contoh berikut menunjukkan cara menggunakan $median operator untuk menghitung skor tes median per kelas.

Buat dokumen sampel

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

Contoh kueri

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

Keluaran

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

Contoh penggunaan ekspresi (MongoDB Shell)

$medianOperator juga dapat digunakan sebagai ekspresi dalam $project tahap untuk menghitung median bidang array.

Buat dokumen sampel

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

Contoh kueri

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

Keluaran

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

Contoh kode

Untuk melihat contoh kode untuk menggunakan $median operator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan ekspresi (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()