Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$std DevSamp
Baru dari versi 8.0.1.
$stdDevSampOperator di Amazon DocumentDB menghitung standar deviasi sampel dari nilai numerik. Sebagai akumulator, ia menghitung deviasi standar sampel di seluruh dokumen dalam grup dalam $group tahap pipa agregasi. Sebagai ekspresi, ia menghitung standar deviasi sampel dari array angka. Deviasi standar sampel digunakan N-1 sebagai pembagi (koreksi Bessel). Non-numeric nilai-nilai diabaikan. Jika ada kurang dari dua nilai numerik, itu kembalinull.
Parameter
-
expression: Ekspresi yang diselesaikan ke nilai numerik atau array nilai numerik.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $stdDevSamp operator untuk menghitung standar deviasi sampel skor per subjek.
Buat dokumen sampel
db.scores.insertMany([ { subject: "math", score: 80 }, { subject: "math", score: 90 }, { subject: "math", score: 85 }, { subject: "math", score: 95 }, { subject: "science", score: 70 }, { subject: "science", score: 75 }, { subject: "science", score: 80 }, { subject: "science", score: 85 } ]);
Contoh kueri
db.scores.aggregate([ { $group: { _id: "$subject", stdDev: { $stdDevSamp: "$score" } }} ]);
Keluaran
[
{ "_id": "math", "stdDev": 6.454972243679028 },
{ "_id": "science", "stdDev": 6.454972243679028 }
]
Contoh penggunaan ekspresi (MongoDB Shell)
$stdDevSampOperator juga dapat digunakan sebagai ekspresi dalam $project tahap untuk menghitung standar deviasi sampel 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: { $stdDevSamp: "$measurements" } }} ]);
Keluaran
[
{ "_id": 1, "stdDev": 3.1622776601683795 },
{ "_id": 2, "stdDev": 0 },
{ "_id": 3, "stdDev": 3.1622776601683795 }
]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
$stdDevSampOperator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan sampel standar deviasi 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.sensorReadings.insertMany([ { _id: 1, sensor: "A", time: 1, value: 2 }, { _id: 2, sensor: "A", time: 2, value: 4 }, { _id: 3, sensor: "A", time: 3, value: 6 }, { _id: 4, sensor: "B", time: 1, value: 10 }, { _id: 5, sensor: "B", time: 2, value: 12 } ]);
Contoh kueri
Contoh berikut mempartisi dokumen berdasarkansensor, mengurutkan setiap partisi berdasarkantime, dan mengembalikan standar deviasi sampel yang sedang berjalan value dari awal partisi melalui dokumen saat ini.
db.sensorReadings.aggregate([ { $setWindowFields: { partitionBy: "$sensor", sortBy: { time: 1 }, output: { runningStdDev: { $stdDevSamp: "$value", window: { documents: ["unbounded", "current"] } } } } } ]);
Keluaran
[
{ "_id": 1, "sensor": "A", "time": 1, "value": 2, "runningStdDev": null },
{ "_id": 2, "sensor": "A", "time": 2, "value": 4, "runningStdDev": 1.4142135623730951 },
{ "_id": 3, "sensor": "A", "time": 3, "value": 6, "runningStdDev": 2 },
{ "_id": 4, "sensor": "B", "time": 1, "value": 10, "runningStdDev": null },
{ "_id": 5, "sensor": "B", "time": 2, "value": 12, "runningStdDev": 1.4142135623730951 }
]
Setiap dokumen ditambah denganrunningStdDev, standar deviasi sampel di value dalam partisinya hingga dan termasuk dokumen saat ini. Ketika jendela berisi kurang dari dua nilai (dokumen pertama di setiap partisi), $stdDevSamp kembalinull.
Contoh kode
Untuk melihat contoh kode untuk menggunakan $stdDevSamp 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):