Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$std DevPop
Baru dari versi 8.0.1.
$stdDevPopOperator di Amazon DocumentDB menghitung standar deviasi populasi dari nilai numerik. Sebagai akumulator, ia menghitung standar deviasi populasi di seluruh dokumen dalam kelompok dalam $group tahap pipa agregasi. Sebagai ekspresi, ia menghitung standar deviasi populasi dari array angka. Standar deviasi populasi menggunakan N sebagai pembagi (bukan N-1). Non-numeric nilai-nilai diabaikan. Jika tidak ada nilai numerik, itu kembalinull. Jika hanya ada satu nilai numerik, itu kembali0.
Parameter
-
expression: Ekspresi yang diselesaikan ke nilai numerik atau array nilai numerik.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $stdDevPop operator untuk menghitung standar deviasi populasi skor per subjek.
Buat dokumen sampel
db.scores.insertMany([ { subject: "math", score: 60 }, { subject: "math", score: 75 }, { subject: "math", score: 85 }, { subject: "math", score: 92 }, { subject: "math", score: 78 }, { subject: "science", score: 55 }, { subject: "science", score: 70 }, { subject: "science", score: 82 }, { subject: "science", score: 91 }, { subject: "science", score: 67 } ]);
Contoh kueri
db.scores.aggregate([ { $group: { _id: "$subject", stdDev: { $stdDevPop: "$score" } }} ]);
Keluaran
[
{ "_id": "math", "stdDev": 10.75174404457249 },
{ "_id": "science", "stdDev": 12.441864811996632 }
]
Contoh penggunaan ekspresi (MongoDB Shell)
$stdDevPopOperator juga dapat digunakan sebagai ekspresi dalam $project tahap untuk menghitung standar deviasi populasi dari bidang array.
Buat dokumen sampel
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] } ]);
Contoh kueri
db.experiments.aggregate([ { $project: { stdDev: { $stdDevPop: "$measurements" } }} ]);
Keluaran
[
{ "_id": 1, "stdDev": 2.8284271247461903 },
{ "_id": 2, "stdDev": 0 },
{ "_id": 3, "stdDev": 2.8284271247461903 }
]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$stdDevPopOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan standar deviasi populasi dari ekspresi yang ditentukan untuk dokumen di setiap jendela. Anda menentukan operator di bawah output bidang, dan secara opsional menentukan batas jendela dengan window dokumen.
Buat dokumen sampel
db.sensorData.insertMany([ { _id: 1, sensor: "A", time: 1, reading: 4 }, { _id: 2, sensor: "A", time: 2, reading: 10 }, { _id: 3, sensor: "A", time: 3, reading: 10 }, { _id: 4, sensor: "B", time: 1, reading: 10 }, { _id: 5, sensor: "B", time: 2, reading: 20 } ]);
Contoh kueri
Contoh berikut mempartisi dokumen berdasarkansensor, mengurutkan setiap partisi berdasarkantime, dan mengembalikan standar deviasi populasi reading yang berjalan dari awal partisi melalui dokumen saat ini.
db.sensorData.aggregate([ { $setWindowFields: { partitionBy: "$sensor", sortBy: { time: 1 }, output: { runningStdDev: { $stdDevPop: "$reading", window: { documents: ["unbounded", "current"] } } } } } ]);
Keluaran
[
{ "_id": 1, "sensor": "A", "time": 1, "reading": 4, "runningStdDev": 0 },
{ "_id": 2, "sensor": "A", "time": 2, "reading": 10, "runningStdDev": 3 },
{ "_id": 3, "sensor": "A", "time": 3, "reading": 10, "runningStdDev": 2.8284271247461903 },
{ "_id": 4, "sensor": "B", "time": 1, "reading": 10, "runningStdDev": 0 },
{ "_id": 5, "sensor": "B", "time": 2, "reading": 20, "runningStdDev": 5 }
]
Setiap dokumen ditambah denganrunningStdDev, standar deviasi populasi di reading dalam partisinya hingga dan termasuk dokumen saat ini. Ketika jendela berisi nilai tunggal, $stdDevPop kembali0.
Contoh kode
Untuk melihat contoh kode untuk menggunakan $stdDevPop 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):