Tanggal adalah bagian penting dari pekerjaan basis data. Mereka sering digunakan untuk melacak catatan. Ada banyak cara untuk bekerja dengan tanggal di backend. MongoDB juga mendukung tanggal. Salah satu penggunaan tanggal adalah untuk mengelompokkan catatan. Di mongoose, kita bisa menggunakan tahap agregasi $group. Pada artikel ini, kita akan membahas cara menggunakan luwak untuk mengelompokkan berdasarkan tanggal
Kami akan menggunakan koleksi penjualan untuk demonstrasi
{ "_Indo". ObjectId["5e3282d442b34ae602c1bb32"], "nama". "Iphone 11", "unitTerjual". 3, "tanggal". Tanggal ISO["2014-04-03T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e3282e942b34ae602c1bb33"], "nama". "Iphone 11 pro", "unit Terjual". 7, "tanggal". Tanggal ISO["2014-07-19T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e3282f842b34ae602c1bb34"], "nama". "Samsung S10", "unitTerjual". 3, "tanggal". Tanggal ISO["2014-04-03T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e32832e42b34ae602c1bb35"], "nama". "Samsung S10", "unitTerjual". 2, "tanggal". Tanggal ISO["2014-09-09T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e32833c42b34ae602c1bb36"], "nama". "Iphone 11 pro max", "satuan Terjual". 1, "tanggal". Tanggal ISO["2014-07-19T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e32834b42b34ae602c1bb37"], "nama". "Iphone 11", "unitTerjual". 5, "tanggal". Tanggal ISO["2014-09-09T08. 00. 00Z"] }
{ "_Indo". ObjectId["5e32835a42b34ae602c1bb38"], "nama". "Iphone 11 pro", "unit Terjual". 7, "tanggal". Tanggal ISO["2014-07-19T08. 00. 00Z"] }
Ada tiga bidang dalam setiap dokumen – nama, unitTerjual, dan tanggal. Setiap dokumen menyebutkan berapa unit smartphone yang terjual pada tanggal tertentu. Tanggal dalam format ISODate. Kami akan mengelompokkan data ini, menampilkan total unit yang terjual pada tanggal tertentu
Untuk melakukan pengujian titik akhir HTTP, kami akan menggunakan alat tukang pos. Anda dapat mengunduh alat tukang pos dari www. tukang pos. com
$grup
Seperti disebutkan sebelumnya, kami akan menggunakan tahap agregasi $group. Jadi mari kita mulai dengan membuat pengendali rute
router. rute["/temukan"]. dapatkan[fungsi[req, res] {}];
Penangan rute di atas akan dipanggil saat rute '/ find' akan dieksekusi. Mari buat agregasi pada koleksi penjualan
penjualan. agregat[
,fungsi[err, hasil]{
jika[salah]{
res. kirim [salah]
}
kalau tidak{
res. json[hasil]
}
}]
Kita harus melewati tahap $group sebagai argumen pertama. Itu harus berupa array objek. Ayo lakukan
[
{
$grup. {
_Indo. { $dateToString. {format. "%Y-%m-%d", tanggal. "$tanggal" } }
}
}
];
Data akan dikelompokkan sesuai dengan nilai yang ditentukan di dalam kolom “_id”. Perhatikan baik-baik
_Indo. { $dateToString. {format. "%Y-%m-%d", tanggal. "$tanggal" } }
Kami menggunakan dateToString untuk mengubah format ISODate menjadi format yang ditentukan. Mari tambahkan ini ke pengendali rute
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
router. rute["/temukan"]. dapatkan[fungsi[req, res] {
penjualan. agregat[
[
{
$grup. {
_Indo. { $dateToString. {format. "%Y-%m-%d", tanggal. "$tanggal" } }
}
}
],
function[err, hasil] {
jika [salah] {
res. kirim[salah];
} kalau tidak {
res. json[hasil];
}
}
];
}];
Ini harus menyediakan grup yang kita inginkan. Mari jalankan rute ini menggunakan alat tukang pos dan lihat hasilnya
Ya. Kami memiliki tiga tanggal. Langkah selanjutnya adalah menghitung total unit yang terjual pada setiap tanggal. Kita dapat melakukannya dengan bantuan operator $sum
"Jumlah Unit Terjual". {
$ jumlah. "$unit Terjual"
}
Jumlah total unit yang terjual pada hari tertentu akan disimpan di kolom baru yang baru saja kita buat – “totalUnitsSold”. Nilai dari operator $sum akan menjadi kolom “unitsSold” yang diawali dengan tanda dollar[$]. Sekarang kita bisa menyelesaikan route handler dengan menambahkan ini ke dalamnya
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
router. rute["/temukan"]. dapatkan[fungsi[req, res] {
penjualan. agregat[
[
{
$grup. {
_Indo. { $dateToString. {format. "%Y-%m-%d", tanggal. "$tanggal" } },
totalUnitSold. {
$ jumlah. "$unit Terjual"
}
}
}
],
function[err, hasil] {
jika [salah] {
res. kirim[salah];
} kalau tidak {
res. json[hasil];
}
}
];
}];
Sudah lengkap sekarang. Mari kita jalankan menggunakan alat tukang pos
Ya. Ini bekerja dengan sempurna. Hasilnya dikelompokkan berdasarkan tanggal dengan benar
Kesimpulan
Tanggal adalah bagian penting dari pembangunan. Konsep grup dengan sering digunakan dengan tanggal. Jadi artikel ini menjelaskan cara menggunakan tanggal dan grup bersama dengan operator $sum di luwak