MongoDB cung cấp các tùy chọn khác nhau để trích xuất các phần ngày tháng.
Bài viết này trình bày 3 cách để trả lại phần tuần từ một ngày trong MongoDB.
Dữ liệu mẫu
Giả sử chúng ta có một bộ sưu tập có tên là cats
với các tài liệu sau:
{ "_id" : 1, "name" : "Scratch", "born" : ISODate("2021-01-03T23:30:15.123Z") } { "_id" : 2, "name" : "Meow", "born" : ISODate("2019-12-08T04:00:12Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }
Các ví dụ sau đây minh họa các tùy chọn khác nhau để trả lại phần tuần từ born
trường của các tài liệu đó.
$week
Nhà điều hành
$week
toán tử trả về tuần trong năm cho một ngày dưới dạng số từ 0 đến 53.
Do đó, chúng tôi có thể chạy mã sau để trả về tuần từ born
trong tài liệu trên.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" }
}
}
]
)
Kết quả:
{ "birthWeek" : 1 } { "birthWeek" : 49 } { "birthWeek" : 38 }
Bạn cũng có thể chỉ định múi giờ khi sử dụng $week
nhà điều hành.
Xem MongoDB $week
để biết thêm thông tin và ví dụ.
$dateToString
Nhà điều hành
$dateToString
toán tử chuyển đổi một đối tượng ngày thành một chuỗi theo định dạng do người dùng chỉ định. Do đó, người dùng có thể chỉ định rằng chỉ phần tuần được trả lại nếu được yêu cầu.
Có các chỉ định định dạng cho từng phần ngày tháng. Đối với phần trong tuần của ngày, %U
định dạng định dạng trả về tuần trong năm và %V
định dạng định dạng trả về tuần trong năm ở định dạng ISO 8601.
Ví dụ:
db.cats.aggregate(
[
{
$project: {
_id: 0,
birthWeek: { $dateToString: { format: "%U", date: "$born" } },
birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
}
}
]
)
Kết quả:
{ "birthWeek" : "01", "birthWeekISO" : "53" } { "birthWeek" : "49", "birthWeekISO" : "49" } { "birthWeek" : "38", "birthWeekISO" : "39" }
Xem MongoDB $dateToString
để biết thêm thông tin và ví dụ.
Cũng xem MongoDB $dateToString
Các mã định dạng cho danh sách các mã định dạng có thể được sử dụng với toán tử này.
$isoWeek
Nhà điều hành
Nếu bạn cần trả lại tuần ở định dạng ISO 8601, hãy sử dụng $isoWeek
. Năm ISO 8601 bắt đầu từ Thứ Hai của tuần 1 và kết thúc vào Chủ Nhật của tuần trước.
Ví dụ:
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Kết quả:
{ "birthIsoWeek" : 53 } { "birthIsoWeek" : 49 } { "birthIsoWeek" : 39 }
Kết quả này khác với khi chúng tôi sử dụng $week
nhà điều hành.
Dưới đây là một ví dụ cho thấy sự khác biệt.
db.cats.aggregate(
[
{
$project:
{
_id: 0,
birthWeek: { $week: "$born" },
birthIsoWeek: { $isoWeek: "$born" }
}
}
]
)
Kết quả:
{ "birthWeek" : 1, "birthIsoWeek" : 53 } { "birthWeek" : 49, "birthIsoWeek" : 49 } { "birthWeek" : 38, "birthIsoWeek" : 39 }