Artikel ini menyajikan 5 cara untuk mengembalikan bagian detik dari objek Date di MongoDB.
Contoh Data
Misalkan kita memiliki koleksi yang disebut cats
dengan dokumen sebagai berikut:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") } { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:20.112Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }
Contoh berikut menunjukkan berbagai opsi untuk mengembalikan bagian detik dari born
bidang dokumen tersebut.
The $second
Operator
$second
operator dirancang khusus untuk mengembalikan dokumen dengan porsi detik dari tanggal tertentu.
Kita dapat menjalankan kode berikut untuk mengembalikan bagian detik dari born
bidang dalam dokumen di atas.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthSecond: { $second: "$born" }
}
}
]
)
Hasil:
{ "birthSecond" : 15 } { "birthSecond" : 20 } { "birthSecond" : 1 }
Anda juga dapat menentukan zona waktu saat menggunakan $second
operator.
Lihat MongoDB $second
untuk informasi dan contoh lebih lanjut.
$dateToString
Operator
$dateToString
operator mengonversi objek tanggal menjadi string menurut format yang ditentukan pengguna. Oleh karena itu, pengguna dapat menentukan bahwa hanya bagian detik yang dikembalikan jika diperlukan.
Ada penentu format untuk setiap bagian tanggal. %S
penentu format mengembalikan bagian kedua (2 digit, nol empuk).
Contoh:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthSecond: { $dateToString: { format: "%S", date: "$born" } }
}
}
]
)
Hasil:
{ "birthSecond" : "15" } { "birthSecond" : "20" } { "birthSecond" : "01" }
Lihat MongoDB $dateToString
untuk informasi dan contoh lebih lanjut.
$dateToParts
Operator
$dateToParts
operator mengembalikan dokumen yang berisi bagian konstituen dari nilai Tanggal BSON yang diberikan sebagai properti individual. Properti yang dikembalikan adalah year
, month
, day
, hour
, minute
, second
dan millisecond
.
Oleh karena itu, kami dapat menggunakan $dateToParts
dalam satu tahap saluran, lalu tambahkan tahap saluran lain yang mengekstrak second
bagian.
Ini dia $dateToParts
pengembalian untuk tiga dokumen kami:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
dateParts: { $dateToParts: { date: "$born" } }
}
}
]
).pretty()
Hasil:
{ "dateParts" : { "year" : 2021, "month" : 1, "day" : 3, "hour" : 23, "minute" : 30, "second" : 15, "millisecond" : 123 } } { "dateParts" : { "year" : 2019, "month" : 12, "day" : 8, "hour" : 4, "minute" : 0, "second" : 20, "millisecond" : 112 } } { "dateParts" : { "year" : 2020, "month" : 9, "day" : 24, "hour" : 10, "minute" : 45, "second" : 1, "millisecond" : 7 } }
Hasil ini kemudian dapat diteruskan ke tahap berikutnya dalam pipeline, dan oleh karena itu kami hanya dapat mengekstrak second
bidang di tahap berikutnya.
Inilah yang terjadi jika kita menambahkan proyeksi lain hanya untuk second
bidang:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
dateParts: { $dateToParts: { date: "$born" } }
}
},
{
$project:
{
birthSecond: "$dateParts.second"
}
}
]
)
Hasil:
{ "birthSecond" : 15 } { "birthSecond" : 20 } { "birthSecond" : 1 }
Jadi, setiap kali Anda menggunakan $dateToParts
di saluran Anda, Anda akan memiliki akses ke second
bidang (dan bagian tanggal lainnya) di tahap berikutnya.
Lihat MongoDB $dateToParts
untuk informasi dan contoh lebih lanjut.
The forEach()
Metode
Anda dapat menggunakan cursor.forEach()
untuk beralih melalui kursor, menggunakan metode JavaScript seperti getSeconds()
atau getUTCSeconds()
untuk mengembalikan hanya beberapa detik.
db.cats.find().forEach(
function(c) {
print(
c.born.getUTCSeconds()
);
}
);
Hasil:
15 20 1
getUTCSeconds()
Metode JavaScript mengembalikan angka integer, antara 0 dan 59, yang mewakili detik pada tanggal yang ditentukan menurut waktu universal.
getSeconds()
metode mengembalikannya dalam waktu lokal.
Anda mungkin juga memperhatikan bahwa opsi sebelumnya mengembalikan seluruh dokumen yang berisi pasangan nama/nilai, sedangkan opsi ini hanya mengembalikan nilai detik yang sebenarnya, dan bukan seluruh dokumen.
map()
Metode
cursor.map()
metode menerapkan fungsi ke setiap dokumen yang dikunjungi oleh kursor dan menggabungkan nilai ke dalam array.
Contoh:
db.cats.find().map(
function(c) {
c = c.born.getUTCSeconds();
return c;
}
);
Hasil:
[ 15, 20, 1 ]