Ringkasan. dalam tutorial ini, Anda akan belajar cara menggunakan MongoDB $count
untuk mengembalikan jumlah dokumen dalam grup
Pengantar MongoDB $count
MongoDB $count
mengembalikan jumlah dokumen dalam grup. Inilah sintaks dari $count
Code language: PHP [php]
{ $count: {} }
Perhatikan bahwa $count
tidak menerima parameter apa pun
$count
secara fungsional setara dengan menggunakan
2 berikut dalam tahapCode language: PHP [php]
{ $sum: 1 }
3Code language: PHP [php]
{ $sum: 1 }
_Code language: PHP [php]
{ $sum: 1 }
MongoDB $hitung contoh
Kami akan menggunakan koleksi
_4 berikut untuk mendemonstrasikanCode language: PHP [php]
{ $sum: 1 }
$count
Code language: JavaScript [javascript]
db.sales.insertMany[[ { "_id" : 1, "item" : "Americanos", "price" : 5, "size": "Short", "quantity" : 22, "date" : ISODate["2022-01-15T08:00:00Z"] }, { "_id" : 2, "item" : "Cappuccino", "price" : 6, "size": "Short","quantity" : 12, "date" : ISODate["2022-01-16T09:00:00Z"] }, { "_id" : 3, "item" : "Lattes", "price" : 15, "size": "Grande","quantity" : 25, "date" : ISODate["2022-01-16T09:05:00Z"] }, { "_id" : 4, "item" : "Mochas", "price" : 25,"size": "Tall", "quantity" : 11, "date" : ISODate["2022-02-17T08:00:00Z"] }, { "_id" : 5, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 12, "date" : ISODate["2022-02-18T21:06:00Z"] }, { "_id" : 6, "item" : "Cappuccino", "price" : 7, "size": "Tall","quantity" : 20, "date" : ISODate["2022-02-20T10:07:00Z"] }, { "_id" : 7, "item" : "Lattes", "price" : 25,"size": "Tall", "quantity" : 30, "date" : ISODate["2022-02-21T10:08:00Z"] }, { "_id" : 8, "item" : "Americanos", "price" : 10, "size": "Grande","quantity" : 21, "date" : ISODate["2022-02-22T14:09:00Z"] }, { "_id" : 9, "item" : "Cappuccino", "price" : 10, "size": "Grande","quantity" : 17, "date" : ISODate["2022-02-23T14:09:00Z"] }, { "_id" : 10, "item" : "Americanos", "price" : 8, "size": "Tall","quantity" : 15, "date" : ISODate["2022-02-25T14:09:00Z"]} ]];
1] Menggunakan MongoDB $count untuk menghitung jumlah dokumen per contoh grup
Contoh berikut menggunakan $count
_ untuk menghitung jumlah dokumen per item dan mengembalikan item dengan jumlah lebih dari dua
Kelompok memiliki kemampuan untuk menghitung. Anda dapat menghitung entri dalam grup. Dengan merangkai perintah $group bersama-sama, Anda dapat menghitung jumlah grup
Misalnya, Anda memiliki sekumpulan catatan pelanggan yang mungkin berisi email duplikat. Anda dapat mengelompokkan melalui email dan mencari tahu siapa yang paling sering menggunakan layanan Anda. Anda dapat menghitung grup, untuk mendapatkan jumlah email yang berbeda, Anda dapat mengelompokkan berdasarkan jumlah, untuk menemukan berapa banyak orang yang menggunakan situs Anda sekali, dua kali, lima kali, dll.
Kami menggunakan $group untuk menghitung, karena umumnya kami ingin menghitung grup
Menghitung semuanya
Kami dapat menghitung seluruh koleksi dengan mengelompokkan semuanya, lalu menambahkan bidang hitungan. Ini sama dengan db. koleksi. Temukan[]. menghitung[]
db.hamsters.aggregate[
{
$group: {
_id: 1,
count: {
$sum: 1
}
}
}
]
Latihan - Hitung semuanya
- Hitung semua orang. Ada berapa?
Hitung dengan $cocok
- Tambahkan langkah $match ke awal saluran pipa Anda. Hitung semua orang dengan kucing menggunakan pipa agregat. Berapa banyak yang kamu punya?
Lebih keras - Hitung dengan $project dan $cond
- Gunakan proyek untuk membuat bidang 'hasCat'. Anda harus menggunakan $cond untuk melakukan ini. http. //dokumen. mongodb. org/manual/referensi/operator/agregasi/cond/. Periksa apakah pipeline Anda sekarang berisi bidang hasCat
- Sekarang kelompokkan berdasarkan hasCat dan hitung
- Akhirnya gunakan $project untuk membersihkan statistik Anda. Anda sekarang memiliki panggilan API JSON untuk menemukan status kucing di aplikasi Anda
Menghitung Popularitas Nama
Mari kita kelompokkan berdasarkan nama, lalu hitung berapa banyak orang yang memiliki masing-masing nama
db.people.aggregate[
{
$group: {
_id: {
name: '$name'
},
count: {
$sum: 1
}
}
}
]
Mengurutkan dengan AgregasiKami dapat mengurutkan catatan dalam pipa agregasi seperti yang dapat kami lakukan dengan find. Pilih bidang untuk diurutkan dan teruskan 1 atau -1 untuk mengurutkan atau membalikkan urutan
db.people.aggregate[
{
$sort: {
age: 1,
name: 1
}
}
]
Latihan - Saham
- mengelompokkan data saham berdasarkan sektor
- Gunakan $sum untuk menemukan sektor yang paling menguntungkan
- Urutkan berdasarkan profitabilitas
- $proyeksikan hasilnya
Hitung berbeda
Tantangan lainnya adalah menghitung jumlah kelompok. Misalnya, Anda memiliki kumpulan data yang berisi email duplikat, Anda mungkin ingin membuat daftar email yang berbeda, lalu menghitung daftar tersebut
Anda memiliki dua cara untuk melakukan ini
Jalan yang salah
Sekarang katakanlah kita ingin memilih semua email unik, kita mungkin menggunakan yang berbeda, seperti itu
db.entrycodes.distinct['email']
Ini akan memunculkan daftar ke memori, seperti ini
[
"123@gmail.com",
"456@gmail.com",
"567@gmail.com",
"890@aol.com"
]
Kita bisa mendapatkan panjang koleksi hanya dengan menanyakan array, seperti itu
db.entrycodes.distinct['email'].length
Namun, ini buruk. Bayangkan sekarang kita memiliki 15.000.000 rekaman. Kami sekarang harus membuat array besar hanya untuk tujuan mendapatkan satu nomor
Jalan yang benar
Sebaliknya kita dapat melakukan ini sepenuhnya dalam kerangka agregasi menggunakan dua perintah grup. Pertama, kami mengelompokkan berdasarkan email dan membuang sisa datanya. Kami sekarang memiliki daftar semua email unik
Kami sekarang ingin mengetahui seberapa besar set ini, jadi kami membuat grup besar yang menampung semuanya [menggunakan _id. 1] dan hitung itu