$bucket - Amazon DocumentDB

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

$bucket

Baru dari versi 8.0

Tidak didukung oleh cluster elastis.

Tahap $bucket agregasi di Amazon DocumentDB memungkinkan Anda mengelompokkan dokumen masukan ke dalam bucket berdasarkan ekspresi dan batas bucket yang ditentukan. Ini dapat berguna untuk menganalisis data yang termasuk dalam rentang nilai atau kategori tertentu.

Parameter

  • groupBy(required): Ekspresi yang menentukan nilai untuk dikelompokkan menurut.

  • boundaries(required): Array nilai ganda yang menentukan batas bucket. Dokumen ditugaskan ke ember berdasarkan nilai groupBy ekspresi yang termasuk dalam batas-batas yang ditentukan.

  • default(opsional): Nilai literal yang merupakan output untuk dokumen yang nilai groupBy ekspresinya tidak termasuk dalam batas yang ditentukan.

  • output(opsional): Objek yang menentukan informasi yang akan dikeluarkan untuk setiap bucket. Anda dapat menggunakan operator akumulator seperti$sum,, $avg$min, dan $max untuk menghitung agregasi untuk setiap bucket.

Contoh (MongoDB Shell)

Contoh berikut menunjukkan bagaimana menggunakan $bucket panggung untuk mengelompokkan data penjualan berdasarkan kisaran 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

db.sales.aggregate([ { $bucket: { groupBy: "$price", boundaries: [0, 10, 20, 30], default: "Other", output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } }, { $sort: { _id: 1 } } ])

Keluaran

[ { _id: 0, count: 1, totalQuantity: 3 }, { _id: 10, count: 2, totalQuantity: 4 }, { _id: 20, count: 2, totalQuantity: 2 } ]

Contoh kode

Untuk melihat contoh kode untuk menggunakan $bucket perintah, pilih tab untuk bahasa yang ingin Anda gunakan:

Node.js
const { MongoClient } = require('mongodb'); async function example() { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const sales = db.collection('sales'); const result = await sales.aggregate([ { $bucket: { groupBy: "$price", boundaries: [0, 10, 20, 30], default: "Other", output: { "count": { $sum: 1 }, "totalQuantity": { $sum: "$quantity" } } } }, { $sort: { _id: 1 } } ]).toArray(); console.log(result); client.close(); } example();
Python
from pymongo import MongoClient def example(): client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&lsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client['test'] sales = db['sales'] result = list(sales.aggregate([ { '$bucket': { 'groupBy': '$price', 'boundaries': [0, 10, 20, 30], 'default': 'Other', 'output': { 'count': {'$sum': 1}, 'totalQuantity': {'$sum': '$quantity'} } } }, { "$sort": { "_id": 1 } } ])) print(result) client.close() example()