Grup mongodb berdasarkan rentang tanggal

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

Grup mongodb berdasarkan rentang tanggal

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

Grup mongodb berdasarkan rentang tanggal

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

Bisakah kita melakukan pengelompokan di MongoDB?

MongoDB group by digunakan untuk mengelompokkan data dari koleksi, kita dapat mencapai klausa group by menggunakan fungsi agregat dan metode grup di MongoDB . Meskipun menggunakan fungsi agregat dengan operasi kueri grup demi klausa lebih cepat daripada kueri normal, pada dasarnya fungsi agregat digunakan dalam kondisi berganda.

Bagaimana cara menanyakan MongoDB berdasarkan tanggal?

MongoDB date akan mengembalikan tanggal saat ini sebagai objek tanggal, dan mongo Shell akan membungkus objek tanggal dengan isolate helper di MongoDB. Kita dapat menentukan tanggal tertentu dengan meneruskan tanggal sebagai string tanggal ISO-8601, dan string ini digunakan dengan rentang 0 hingga 9999 ke fungsi date() baru di MongoDB.

Bagaimana cara mendapatkan data antara dua tanggal di MongoDB?

Anda dapat menggunakan Kueri untuk Rentang saat Anda ingin mendapatkan data di antara dua tanggal. Ini tentang meminta data untuk rentang nilai.

Bagaimana cara membandingkan tanggal dalam agregasi MongoDB?

Cara Menemukan Dokumen Antara Dua Tanggal di MongoDB. [{ "$cocok". { "tanggal dibuat". { "$gt". ISOTanggal( "2022-01-01" ), "$lt". ISODate( "2022-02-10" ) } }}]); Kueri di atas mengembalikan 1 catatan dari data sampel yang telah kami tambahkan.