Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
$count (akumulator)
Baru dari versi 8.0.1.
Gunakan $count akumulator dalam $group tahap untuk mengembalikan jumlah dokumen di setiap grup. Ia menerima objek kosong {} sebagai argumennya.
Ini berbeda dengan tahap $count pipeline, yang merupakan tahap mandiri yang menghitung semua dokumen yang melewati pipa. A $count kumulator malah menghitung dokumen dalam setiap kelompok yang diproduksi oleh$group.
Sintaksis
{ $count: {} }
Parameter
-
A
$countkumulator tidak membutuhkan argumen. Ini menerima objek kosong{}dan mengembalikan jumlah dokumen di setiap grup.
Contoh (MongoDB Shell)
Contoh berikut menunjukkan cara menggunakan $count akumulator untuk menghitung jumlah produk di setiap kategori.
Buat dokumen sampel
db.products.insertMany([ { name: "Widget", category: "A" }, { name: "Gadget", category: "A" }, { name: "Doohickey", category: "B" }, { name: "Thingamajig", category: "B" }, { name: "Whatsit", category: "B" } ])
Contoh kueri
db.products.aggregate([ { $group: { _id: "$category", count: { $count: {} } } } ])
Keluaran
[
{ "_id": "A", "count": 2 },
{ "_id": "B", "count": 3 }
]
Contoh penggunaan operator jendela (MongoDB Shell)
Baru dari versi 8.0.2.
A $count kumulator juga dapat digunakan sebagai operator jendela di pang $setWindowFields gung. Dalam konteks ini, ia mengembalikan jumlah dokumen di setiap jendela. Anda menentukan operator di bawah output bidang, dan secara opsional menentukan batas jendela dengan window dokumen.
Buat dokumen sampel
db.events.insertMany([ { _id: 1, category: "A", day: 1 }, { _id: 2, category: "A", day: 2 }, { _id: 3, category: "A", day: 3 }, { _id: 4, category: "B", day: 1 }, { _id: 5, category: "B", day: 2 } ])
Contoh kueri
Contoh berikut mempartisi dokumen berdasarkancategory, mengurutkan setiap partisi berdasarkanday, dan mengembalikan jumlah dokumen yang berjalan dari awal partisi melalui dokumen saat ini.
db.events.aggregate([ { $setWindowFields: { partitionBy: "$category", sortBy: { day: 1 }, output: { runningCount: { $count: {}, window: { documents: ["unbounded", "current"] } } } } } ])
Keluaran
[
{ "_id": 1, "category": "A", "day": 1, "runningCount": 1 },
{ "_id": 2, "category": "A", "day": 2, "runningCount": 2 },
{ "_id": 3, "category": "A", "day": 3, "runningCount": 3 },
{ "_id": 4, "category": "B", "day": 1, "runningCount": 1 },
{ "_id": 5, "category": "B", "day": 2, "runningCount": 2 }
]
Setiap dokumen ditambah denganrunningCount, jumlah dokumen dalam partisinya hingga dan termasuk dokumen saat ini.
Contoh kode
Untuk melihat contoh kode untuk menggunakan $count akumulator, pilih tab untuk bahasa yang ingin Anda gunakan. Contoh berikut menunjukkan penggunaan akumulator (in$group) dan penggunaan operator jendela (in$setWindowFields):