Nếu bạn có tài liệu lưu trữ ngày tháng dưới dạng đối tượng Ngày, nhưng bạn muốn trả lại chúng ở định dạng khác, bạn có thể sử dụng $dateToString
nhà điều hành đường ống tổng hợp.
Ví dụ:bạn có thể muốn một ngày được trả lại bằng mm/dd/yyyy
định dạng thay vì ISODate()
dài định dạng bao gồm phút, giây, mili giây, v.v.
$dateToString
toán tử chuyển đổi đối tượng Ngày thành một chuỗi và tùy chọn cho phép bạn chỉ định định dạng cho kết quả đầu ra.
Ví dụ
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:20.112Z") } { "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:45:01.007Z") }
Chúng ta có thể sử dụng $dateToString
để trả lại tài liệu đó với ngày tháng ở định dạng khác.
Ví dụ:hãy xóa giây và mili giây khỏi ngày:
db.cats.aggregate(
[
{
$project: {
name: 1,
formattedDate: { $dateToString: { format: "%Y-%m-%d %H:%M", date: "$born" } }
}
}
]
)
Kết quả:
{ "_id" : 1, "name" : "Scratch", "formattedDate" : "2021-01-03 23:30" } { "_id" : 2, "name" : "Meow", "formattedDate" : "2019-12-08 04:00" } { "_id" : 3, "name" : "Fluffy", "formattedDate" : "2020-09-24 10:45" }
Chúng tôi có thể định dạng ngày bằng cách sử dụng format
tham số. Đây là một tham số tùy chọn cho phép bạn sử dụng không hoặc nhiều chỉ định định dạng để cho biết ngày nên được định dạng như thế nào.
Xem MongoDB $dateToString
Các mã định dạng cho danh sách đầy đủ các mã định dạng có thể được sử dụng với $dateToString
nhà điều hành.
Ngày trong dd/mm/yyyy
Định dạng
Đây là một ví dụ khác chuyển đổi ngày tháng thành dd/mm/yyyy
định dạng:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%d/%m/%Y", date: "$born" } }
}
}
]
)
Kết quả:
{ "formattedDate" : "03/01/2021" } { "formattedDate" : "08/12/2019" } { "formattedDate" : "24/09/2020" }
Ngày trong mm/dd/yyyy
Định dạng
Hoặc đặt nó trong mm/dd/yyyy
, chúng ta có thể chỉ cần chuyển hai mã định dạng đầu tiên xung quanh:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%m/%d/%Y", date: "$born" } }
}
}
]
)
Kết quả:
{ "formattedDate" : "01/03/2021" } { "formattedDate" : "12/08/2019" } { "formattedDate" : "09/24/2020" }
Trả lại một phần ngày duy nhất
Bạn có thể bao gồm nhiều hoặc ít định dạng tùy ý. Ví dụ:bạn có thể chỉ sử dụng một công cụ định dạng để chỉ xuất phần năm của ngày.
Ví dụ:
db.cats.aggregate(
[
{
$project: {
_id: 0,
formattedDate: { $dateToString: { format: "%Y", date: "$born" } }
}
}
]
)
Kết quả:
{ "formattedDate" : "2021" } { "formattedDate" : "2019" } { "formattedDate" : "2020" }
Mặc dù vậy, hãy nhớ rằng có nhiều cách khác để trích xuất chỉ một phần ngày tháng từ đối tượng Ngày. Ví dụ:bạn có thể sử dụng $year
toán tử để trích xuất năm.
Dưới đây là các toán tử khác nhau để trích xuất từng phần ngày cụ thể:
-
$dayOfWeek
-
$dayOfMonth
-
$dayOfYear
-
$hour
-
$isoWeek
-
$isoWeekYear
-
$isoDayOfWeek
-
$millisecond
-
$minute
-
$month
-
$second
-
$week
-
$year
Bạn cũng có thể sử dụng $dateToParts
toán tử để trả về một tài liệu chứa tất cả các phần ngày tháng khác nhau được tách thành trường riêng của chúng.