Grup mongodb berdasarkan bidang dan hitungan

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

{ $count: {} }

Code language: PHP (php)

Perhatikan bahwa $count tidak menerima parameter apa pun

$count secara fungsional setara dengan menggunakan

{ $sum: 1 }

Code language: PHP (php)
2 berikut dalam tahap

{ $sum: 1 }

Code language: PHP (php)
3

{ $sum: 1 }

Code language: PHP (php)
_

MongoDB $hitung contoh

Kami akan menggunakan koleksi

{ $sum: 1 }

Code language: PHP (php)
_4 berikut untuk mendemonstrasikan $count

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")} ]);

Code language: JavaScript (javascript)

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 Agregasi

Kami 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

[

"[email protected]",

"[email protected]",

"[email protected]",

"[email protected]"

]

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

Bagaimana cara menggunakan grup dan menghitung di MongoDB?

Kita dapat menggunakan kode berikut untuk mengelompokkan berdasarkan bidang 'posisi' dan menghitung kemunculan setiap posisi. .
Posisi 'Maju' terjadi 1 kali
Posisi 'Guard' terjadi 3 kali
Posisi 'Center' terjadi 1 kali

Bagaimana cara menghitung dalam agregasi MongoDB?

Kueri $hitung gabungan MongoDB . Di sini, string adalah nama bidang keluaran yang memiliki hitungan sebagai nilainya. Dan, string harus berupa string yang tidak kosong, tidak dimulai dengan '$' dan tidak mengandung '. It transfers a document to the next stage that contains a count of the number of documents input to the stage. Here, the string is the name of the output field which has the count as its value. And, the string must be a non-empty string, not start with '$' and not contain '.

Bagaimana cara menghitung bidang di MongoDB?

Kueri penghitungan MongoDB . “ db. koleksi. count()” metode tidak melakukan operasi find() tetapi sebagai alternatif menghitung dan mengembalikan jumlah hasil yang cocok dengan kueri.

Bisakah kita menggunakan count dengan fungsi agregat di MongoDB?

MongoDB $count Agregasi . Ada beberapa hal penting yang perlu diperhatikan tentang sintaks ini. Pertama, kita memanggil operator $count dan kemudian menentukan string. The MongoDB $count operator allows us to pass a document to the next phase of the aggregation pipeline that contains a count of the documents. There a couple of important things to note about this syntax: First, we invoke the $count operator and then specify the string.