Bismillaahirrohmaanirrohiim…
Pada MySQL, untuk menjalankan query group by dan count atau sum caranya cukup mudah, bisa dengan query di bawah ini:
select kolomA, count(kode) as jumkode from tabel where status='oke' group by kolomA order by jumkode DESC
Jika pada mongoDB, menggunakan fungsi aggregate
db.namacollection.aggregate([{ $match: { status: "oke" } },{"$group": {_id: "$kolomA",count: {$sum: 1}}},{$sort: {count: -1}}])
Jika menggunakan php driver mongoDB, perintahnya seperti berikut
$manager = new MongoDB\Driver\Manager(); $command = new MongoDB\Driver\Command([ 'aggregate' => 'namacollection', 'pipeline' => [ ['$match'=>['status'=>'oke']], ['$group' => ['_id' => '$kolomA', 'count' => ['$sum' => 1]]], ['$sort'=>['count'=>-1]], ], 'cursor' => new stdClass, ]); $cursor = $manager->executeCommand('namadatabase', $command);
Nah, sekarang jika ingin memberi filter range tanggal dari tanggal sekian sampai tanggal sekian, perintah di mongoDB nya sebagai berikut:
db.namacollection.aggregate([{ $match: { tanggal: {$gte:ISODate("2021-05-01"),$lt:ISODate("2020-05-30"}} } },{"$group": {_id: "$kolomA",count: {$sum: 1}}},{$sort: {count: -1}}]) //$gte bisa diganti $gt kalau error
Versi phpnya adalah seperti di bawah ini:
$manager = new MongoDB\Driver\Manager(); $command = new MongoDB\Driver\Command([ 'aggregate' => 'namacollection', 'pipeline' => [ ['$match'=>['tanggal'=> [ '$gt'=>new MongoDB\BSON\UTCDatetime(strtotime('2021-05-01 00:00:00') * 1000), '$lt'=>new MongoDB\BSON\UTCDatetime(strtotime('2020-05-30 23:59:59') * 1000), ] ] ], ['$group' => ['_id' => '$kolomA', 'count' => ['$sum' => 1]]], ['$sort'=>['count'=>-1]], ], 'cursor' => new stdClass, ]); $cursor = $manager->executeCommand('namadatabase', $command); //format kolom tanggal haruslah berupa datetime
Demikian, semoga bermanfaat…
Bismillaahirrohmaanirrohiim... Untuk mendeteksi cpu usage tinggi memang perkara rumit, adakalanya karena codingan bermasalah, akses ke…
Bismillaahirrohmaanirrohiim... Jika tidak dirawat dan dicek berkala, log mongodb akan semakin membesar. Bahkan sampai menghabiskan…
Bismillaahirrohmaanirrohiim... Jika kita membuat website yang digunakan untuk memantau lokasi HP client, maka kita memerlukan…
Bismillaahirrohmaanirrohiim... Kali ini kita akan mencoba menerapkan rumus trigonometeri dari formula haversine, yang digunakan untuk…
Bismillaahirrohmaanirrohiim... Disini saya akan berbagi pengalaman tentang susahnya membuka tutup botol cleo kecil ukuran 220ml.…
Bismillaahirrohmaanirrohiim... Kali ini saya akan berbagi pengalaman tentang mati lampu yang disebabkan oleh permasalahan arus…