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 penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$medianOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia menghitung median dari nilai numerik untuk dokumen di setiap jendela. Anda menentukan operator di bawah output bidang, dan secara opsional menentukan batas jendela dengan window dokumen.
catatan
Ketika digunakan sebagai operator jendela di$setWindowFields, $median dibatasi hingga 100 MB data perantara. Operasi yang melebihi batas ini mengembalikan kesalahan.
Buat dokumen sampel
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 } ]);
Contoh kueri
Contoh berikut mempartisi dokumen dengan city dan menghitung median reading di semua dokumen di setiap partisi.
db.temperatures.aggregate([ { $setWindowFields: { partitionBy: "$city", output: { medianReading: { $median: { input: "$reading", method: "approximate" }, window: { documents: ["unbounded", "unbounded"] } } } } } ]);
Keluaran
[
{ "_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 }
]
Setiap dokumen ditambah denganmedianReading, perkiraan median dari reading semua dokumen di partisinya.
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), penggunaan ekspresi (in$project), dan penggunaan operator jendela (in$setWindowFields):