Nếu bạn có bộ sưu tập MongoDB với ngày được lưu trữ dưới dạng chuỗi, bạn có thể chuyển đổi chúng thành loại Date BSON nếu cần.
Dưới đây là ba cách để chuyển đổi một chuỗi thành Ngày 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 dogs
:
{ "_id" : 1, "name" : "Fetch", "born" : "2021-01-03T23:30:15.123" }
Chúng ta có thể thấy rằng born
trường chứa ngày tháng, nhưng ngày tháng đó được lưu trữ dưới dạng chuỗi.
Chúng tôi có thể sử dụng các toán tử đường ống tổng hợp sau đây để chuyển đổi chuỗi đó thành ngày.
$dateFromString
Nhà điều hành
$dateFromString
toán tử đường ống tổng hợp được thiết kế đặc biệt để chuyển đổi một ngày thành một chuỗi.
Nó yêu cầu một dateString
đối số, là chuỗi mà bạn muốn chuyển đổi thành ngày tháng.
Dưới đây là một ví dụ về chuyển đổi chuỗi trong bộ sưu tập ở trên thành một ngày:
db.dogs.aggregate([
{
$project: {
born: {
$dateFromString: {
dateString: '$born'
}
}
}
}
])
Kết quả:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Chúng ta có thể thấy rằng ngày hiện được bao bọc trong trình trợ giúp ISODate, có nghĩa là nó là một đối tượng Ngày.
$dateFromString
toán tử chấp nhận một số ít các đối số khác, tất cả đều là tùy chọn. Xem MongoDB $dateFromString
để biết thêm thông tin và ví dụ.
$toDate
Nhà điều hành
$toDate
nhà điều hành đường ống tổng hợp chuyển đổi một giá trị thành một ngày. Giá trị có thể là bất kỳ kiểu nào có thể được chuyển đổi thành ngày, về cơ bản là số, chuỗi và id đối tượng.
Bài viết này nói về việc chuyển đổi chuỗi thành ngày tháng và đây là một ví dụ về cách sử dụng $toDate
để làm điều đó:
db.dogs.aggregate([
{
$project: {
"born": {
$toDate: "$born"
}
}
}
])
Kết quả:
{ "_id" : 1, "born" : ISODate("2021-01-03T23:30:15.123Z") }
Xem Mongo $toDate
để 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: "date",
onError: "An error occurred",
onNull: "Input was null or empty"
}
}
}
}
]
)
Kết quả:
{ "_id" : 1, "result" : ISODate("2021-01-03T23:30:15.123Z") }
Bạn có thể nhận thấy 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ụ.