MongoDB có kiểu Date BSON cho phép bạn lưu trữ ngày tháng dưới dạng ngày tháng.
Bạn cũng có thể lưu trữ ngày tháng dưới dạng chuỗi, nếu đó là những gì bạn cần.
Tiến thêm một bước nữa, bạn cũng có thể chuyển đổi Ngày thành chuỗi.
Bài viết này trình bày ba cách để chuyển đổi Ngày thành chuỗi trong MongoDB.
Dữ liệu mẫu
Các ví dụ trong bài viết này sử dụng tài liệu sau trong bộ sưu tập có tên cats
:
{
"_id" : 1,
"name" : "Scratch",
"born" : ISODate("2021-01-03T23:30:15.123Z")
}
Lưu ý rằng born
trường là Ngày. Các ví dụ sau sử dụng các toán tử đường ống tổng hợp khác nhau để chuyển đổi trường này thành một chuỗi.
$dateToString
Nhà điều hành
$dateToString
nhà điều hành đường ống tổng hợp là nơi rõ ràng nhất để bắt đầu.
Như tên gọi của nó, mục đích duy nhất của nó là chuyển Ngày thành một chuỗi (và trả về kết quả).
Ví dụ:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $dateToString: { format: "%Y-%m-%dT%H:%M:%S.%LZ", date: "$born" } }
}
}
]
)
Kết quả:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Ở đây, tôi đã cung cấp một chuỗi định dạng để chỉ định định dạng của chuỗi kết quả. Trong trường hợp này, tôi đã sử dụng %Y-%m-%dT%H:%M:%S.%LZ
, là định dạng mặc định. Nếu tôi chưa chỉ định một định dạng, thì đây là định dạng mà nó sẽ được sử dụng.
Bạn có thể di chuyển các chỉ định định dạng đó cho phù hợp với chuỗi kết quả của mình.
Ví dụ, chúng tôi có thể làm điều này:
db.cats.aggregate( [ { $project: { _id: 0, dateString: { $dateToString: { format: "%d/%m/%Y", date: "$born" } } } } ] )
Kết quả:
{ "dateString" : "03/01/2021" }
Xem MongoDB $dateToString
để biết thêm thông tin về nhà điều hành này.
$toString
Nhà điều hành
$toString
toán tử đường ống tổng hợp tương tự như $dateToString
, ngoại trừ việc nó có thể chuyển đổi từ nhiều loại khác nhau - nó không chỉ giới hạn ở việc chuyển đổi từ Ngày.
Nhưng vì mục đích của chúng tôi, chúng tôi đang chuyển đổi từ một Ngày.
Ví dụ:
db.cats.aggregate(
[
{
$project: {
_id: 0,
dateString: { $toString: "$born" }
}
}
]
)
Kết quả:
{ "dateString" : "2021-01-03T23:30:15.123Z" }
Toán tử này không cung cấp cho chúng tôi tùy chọn chỉ định một định dạng, vì vậy định dạng được trả về nguyên trạng.
Xem MongoDB $toString
để biết thêm thông tin và ví dụ.
$convert
Nhà điều hành
$convert
toán tử được thiết kế đặc biệt để chuyển đổi giữa loại này sang loại khác.
input
tham số chỉ định trường bạn muốn chuyển đổi và to
tham số chỉ định loại bạn muốn chuyển đổi nó thành.
Ví dụ:
db.cats.aggregate(
[
{
$project:
{
result:
{
$convert: {
input: "$born",
to: "string",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Kết quả:
{ "_id" : 1, "result" : "2021-01-03T23:30:15.123Z" }
Lưu ý rằng $convert
toán tử cũng chấp nhận onError
và onNull
tham số, cho phép chúng tôi cung cấp thông báo để sử dụng trong trường hợp có lỗi hoặc null
giá trị. Điều này ngăn toàn bộ hoạt động tổng hợp tạm dừng và nó cho phép thông báo lỗi thân thiện với người dùng trong tài liệu đầu ra.
Xem MongoDB $convert
để biết thêm thông tin và ví dụ.