Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$bucketAuto
Baru dari versi 8.0.2.
T $bucketAuto ahap agregasi di Amazon DocumentDB secara otomatis mengelompokkan dokumen masukan ke dalam jumlah bucket tertentu berdasarkan ekspresi tertentu. Tidak seperti$bucket, di mana Anda menentukan batas bucket secara eksplisit, $bucketAuto secara otomatis menentukan batas sehingga dokumen didistribusikan secara merata di seluruh jumlah bucket yang diminta. Ini dapat berguna ketika Anda ingin mengkategorikan data ke dalam jumlah grup tetap tanpa mengetahui distribusi nilai terlebih dahulu.
Parameter
-
groupBy(wajib): Ekspresi yang menentukan nilai yang akan dikelompokkan. -
buckets(wajib): Bilangan bulat positif yang menentukan jumlah bucket tempat dokumen dikelompokkan. Tergantung pada dokumen input dangroupByekspresi, jumlah bucket sebenarnya bisa kurang dari jumlah yang ditentukan. -
output(opsional): Objek yang menentukan informasi yang akan dikeluarkan untuk setiap bucket. Anda dapat menggunakan operator akumulator seperti$sum,,$avg$min, dan$maxuntuk menghitung agregasi untuk setiap bucket. Jika dihilangkan, setiap bucket menampilkancountbidang secara default. -
granularity(opsional): Sebuah string yang menentukan seri angka yang disukai untuk digunakan untuk batas bucket. Ini mengubah batas yang dihitung ke perkembangan numerik standar. Parameter ini hanya tersedia jika semuagroupBynilai numerik dan tidak satupun dari merekaNaN. Nilai yang valid adalah:R5R10,R20,R40,R80,1-2-5,E6,E12,E24,E48,E96,E192, danPOWERSOF2.
Keluaran
Setiap bucket dikembalikan sebagai dokumen terpisah yang berisi _id objek yang menggambarkan batas-batas bucket:
-
_id.min: Batas bawah inklusif ember. -
_id.max: Batas atas ember. Ikatan ini eksklusif untuk setiap bucket kecuali bucket terakhir dalam seri, di mana itu inklusif.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $bucketAuto tahap untuk mengelompokkan data penjualan ke dalam bucket berdasarkan harga.
Buat dokumen sampel
db.sales.insertMany([ { item: "abc", price: 10, quantity: 2, date: new Date("2020-09-01") }, { item: "def", price: 20, quantity: 1, date: new Date("2020-10-01") }, { item: "ghi", price: 5, quantity: 3, date: new Date("2020-11-01") }, { item: "jkl", price: 15, quantity: 2, date: new Date("2020-12-01") }, { item: "mno", price: 25, quantity: 1, date: new Date("2021-01-01") } ]);
Contoh kueri
Perintah berikut mengelompokkan dokumen sampel ke dalam tiga bucket berdasarkan harga:
db.sales.aggregate([ { $bucketAuto: { groupBy: "$price", buckets: 3, output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } } ])
Keluaran
Perintah mengembalikan output berikut:
[
{ _id: { min: 5, max: 15 }, count: 2, totalQuantity: 5 },
{ _id: { min: 15, max: 25 }, count: 2, totalQuantity: 3 },
{ _id: { min: 25, max: 25 }, count: 1, totalQuantity: 1 }
]
Contoh kueri dengan granularitas
Contoh berikut menambahkan granularity opsi untuk memasang batas bucket yang dihitung ke pangkat 2.
db.sales.aggregate([ { $bucketAuto: { groupBy: "$price", buckets: 2, granularity: "POWERSOF2", output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } } ])
Keluaran
Perintah mengembalikan output berikut:
[
{ _id: { min: 4, max: 16 }, count: 3, totalQuantity: 7 },
{ _id: { min: 16, max: 32 }, count: 2, totalQuantity: 2 }
]
Contoh kode
Untuk melihat contoh kode untuk menggunakan $bucketAuto perintah, pilih tab untuk bahasa yang ingin Anda gunakan: