Menggunakan peta/pengurangan untuk tugas sederhana itu seperti menggunakan palu godam (relatif lambat) untuk memecahkan kacang. kerangka kerja agregasi pada dasarnya diciptakan untuk jenis agregasi sederhana ini (dan dapat melakukan lebih banyak hal untuk Anda!):
db.order.aggregate([
{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}},
{ "$out": "order_total"}
])
Bergantung pada kasus penggunaan Anda, Anda bahkan dapat menghilangkan $out
panggung dan mengkonsumsi hasilnya secara langsung.
> db.orders.aggregate([{ "$group":{ "_id":"$customer", "orders":{ "$sum": 1 }}}])
{ "_id" : "b", "orders" : 2 }
{ "_id" : "a", "orders" : 3 }
Perhatikan bahwa dengan koleksi yang sangat besar, kemungkinan besar ini tidak cocok, karena membutuhkan waktu (tetapi masih harus lebih cepat daripada operasi peta/pengurangan).
Untuk menemukan jumlah pesanan dari satu pelanggan, Anda dapat menggunakan kueri sederhana dan menggunakan kursor.count() metode:
> db.orders.find({ "customer": "a" }).count()
3