Bất cứ khi nào bạn lưu trữ thời gian trong MongoDB, bạn thực sự nên cân nhắc sử dụng loại Ngày gốc để thay thế. Nó không chỉ cung cấp cho bạn độ chính xác đến mili giây mà còn mở ra rất nhiều tính năng không có sẵn cho số nguyên đơn giản, chẳng hạn như toán tử tổng hợp ngày
Nếu bạn thực sự không muốn sử dụng ngày gốc vì một lý do mơ hồ nào đó [tôi không thể nghĩ ra lý do nào tốt] hoặc không muốn chuyển đổi toàn bộ cơ sở dữ liệu của mình [thực sự, bạn nên làm vậy] và cần độ chính xác cao hơn, bạn có thể . Điều này đảm bảo khả năng tương tác với dữ liệu cũ vì các số nguyên và giá trị dấu phẩy động thường có thể được chuyển đổi và so sánh với nhau một cách dễ dàng
Đối số có thể là bất kỳ miễn là nó phân giải thành một ngày. Để biết thêm thông tin về biểu thức, hãy xem
Thí dụ
Xem xét bộ sưu tập bán hàng với tài liệu sau.
{ "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : ISODate["2014-01-01T08:15:39.736Z"] }
Việc tổng hợp sau đây sử dụng $millisecond và các toán tử ngày khác để chia nhỏ ngày . . . . . . field:
db.sales.aggregate[ [ { $project: { year: { $year: "$date" }, month: { $month: "$date" }, day: { $dayOfMonth: "$date" }, hour: { $hour: "$date" }, minutes: { $minute: "$date" }, seconds: { $second: "$date" }, milliseconds: { $millisecond: "$date" }, dayOfYear: { $dayOfYear: "$date" }, dayOfWeek: { $dayOfWeek: "$date" }, week: { $week: "$date" } } } ] ]
Hoạt động trả về kết quả sau
{ "_id" : 1, "year" : 2014, "month" : 1, "day" : 1, "hour" : 8, "minutes" : 15, "seconds" : 39, "milliseconds" : 736, "dayOfYear" : 1, "dayOfWeek" : 4, "week" : 0 }
← $second [tập hợp] $dateToString [tập hợp] →
© MongoDB, Inc 2008-2017. MongoDB, Mongo và logo chiếc lá là các nhãn hiệu đã đăng ký của MongoDB, Inc
Trong hướng dẫn MongoDB này, chúng ta sẽ tìm hiểu "Định dạng ngày MongoDB" với các ví dụ. Chúng tôi sẽ đề cập đến điều này bằng cách thực hiện các hoạt động khác nhau với các ví dụ. Các chủ đề danh sách sau đây chúng tôi sẽ đề cập trong hướng dẫn này
- Truy vấn định dạng ngày MongoDB
- Định dạng ngày MongoDB dd/mm/yyyy
- Định dạng ngày MongoDB yyyy-mm-dd
- Định dạng ngày MongoDB mặc định
- Ví dụ định dạng ngày MongoDB ISO
- Múi giờ định dạng ngày MongoDB
- Định dạng ngày MongoDB thành chuỗi
- MongoDB định dạng ngày UTC
- MongoDB chuyển đổi chuỗi thành định dạng ngày
Mục lục
Truy vấn định dạng ngày MongoDB
Truy vấn ngày trong MongoDB hiển thị ngày hiện tại dưới dạng một chuỗi trong vỏ mongo. Ngày hiện tại sẽ được MongoDB trả về dưới dạng một đối tượng ngày và trình bao mongo sẽ liên kết đối tượng ngày với trình trợ giúp cô lập của MongoDB
Chúng ta có thể chỉ định một ngày cụ thể bằng cách chuyển nó dưới dạng chuỗi ngày ISO-8601, sau đó được chuyển đến phương thức date[] mới của MongoDB với phạm vi từ 0 đến 9999
Định dạng ngày khác nhau trong MongoDB
- new date []
- new Date []
- new Date []
- new Date[“”]
1. ngày mới [ .
- Một phần nghìn giây là một số nguyên và Nó xác định số phần nghìn giây
- Một phần nghìn giây sẽ chuyển đổi ngày thành định dạng ngày chuẩn
Thí dụ
Trong ví dụ sau, chúng tôi sẽ chuyển đổi mili giây thành định dạng ngày
new Date[789456123]
Ở đây, chúng tôi đã sử dụng 789456123 mili giây và đầu ra của những mili giây này là 1970-01-10
2. new Date []:
Ở định dạng này, chúng tôi xác định năm, tháng và ngày ở định dạng đầy đủ và nó cũng sẽ hiển thị giờ, phút và giây ở định dạng đầy đủ
Thí dụ
Trong ví dụ sau, chúng tôi đã sử dụng ngày là [“2021-11-20T12. 05. 45”]
new Date["2021-11-20T12:05:45"]
Mã này sẽ hiển thị đầu ra dưới dạng
3. new Date []:
Chúng tôi sẽ xác định một năm, tháng và ngày ở định dạng đầy đủ
Thí dụ
Trong ví dụ sau, chúng tôi đã sử dụng ngày là [“21-11-2021”]
new Date["2021-11-21"]
Mã này sẽ hiển thị đầu ra dưới dạng
4. new Date[“”]:
Ở định dạng này, chúng tôi xác định năm, tháng và ngày ở định dạng đầy đủ và nó cũng sẽ hiển thị giờ, phút và giây ở định dạng đầy đủ
Thí dụ
Trong ví dụ sau, chúng tôi đã sử dụng ngày là [“2021-10-13T12. 05. 45Z”]
new Date["2021-10-13T12:05:45Z"]
Mã này sẽ hiển thị đầu ra dưới dạng
Cũng kiểm tra. Thứ tự MongoDB theo ngày
Định dạng ngày MongoDB dd/mm/yyyy
Trong chủ đề này, chúng ta sẽ sử dụng hàm tổng hợp $dateToString để chuyển đổi đối tượng ngày thành chuỗi theo định dạng do người dùng chỉ định. Ở đây, chúng tôi sẽ chuyển đổi ngày thành định dạng dd/mm/yyyy và hiểu điều này với sự trợ giúp của một ví dụ
Biểu thức $dateToString có cú pháp như sau
{ $dateToString: {
date: ,
format: ,
timezone: ,
onNull:
} }
FieldDescriptiondateTrường ngày được sử dụng để chuyển đổi một ngày thành một chuỗi. formatTùy chọn, trường định dạng được sử dụng cho đặc tả định dạng ngày. múi giờTùy chọn, trường múi giờ được sử dụng cho múi giờ của kết quả thao tác. onNullOptional, trường onNull được sử dụng để trả về nếu ngày không có giá trị hoặc bị thiếuThe subsequent format specifiers are available for use in the :
Chỉ địnhMô tảGiá trị có thể có%dNgày của Tháng [ 2 chữ số, không đệm]01-31%mTháng [2 chữ số, không đệm]01-12%YNăm [4 chữ số, không đệm]0000-9999%wNgày trong tuần [1-Chủ nhật,Mới trong phiên bản 3. 40000-9999
Và một số thông số định dạng khác cũng có sẵn theo yêu cầu của bạn
Thí dụ
Các tài liệu sau đây đã được chèn vào bộ sưu tập 'blogs'
________số 8_______Bây giờ, chúng ta sẽ áp dụng khối mã sau vào bộ sưu tập ‘blogs’ để chuyển đổi trường dấu thời gian thành định dạng ngày dd/mm/yyyy
db.blogs.aggregate[
[
{
$project: {
dayMonthYear: { $dateToString: { format: "%d/%m/%Y", date: "$timestamp" } }
}
}
]
]
Ở đây, tập hợp sử dụng $dateToString để trả về ngày dưới dạng chuỗi định dạng dd/mm/yyyy
đầu ra
Đọc. MongoDB tìm chuỗi chứa
Định dạng ngày MongoDB yyyy-mm-dd
Trong chủ đề này, chúng ta sẽ sử dụng hàm gộp dateToString để chuyển đối tượng ngày tháng thành chuỗi theo định dạng do người dùng chỉ định. Ở đây, chúng tôi sẽ chuyển đổi ngày thành định dạng yyyy-mm-dd và hiểu điều này với sự trợ giúp của một ví dụ
Lưu ý, nếu bạn muốn tìm hiểu thêm về $dateToString thì có thể xem chủ đề trước
Thí dụ
Các tài liệu sau đây sẽ chèn vào bộ sưu tập quốc gia
db.country.insertMany[[
{
"_id" : 101,
"UserName" : "Larry",
"UserMessage" : "Hi",
"UserMessagePostDate" : new Date["2021-10-10"],
"Country" : "United States of America"
},
{
"_id" : 102,
"UserName" : "Chris",
"UserMessage" : "Hello",
"UserMessagePostDate" : new Date["2021-10-28"],
"Country" : "Canada"
},
{
"_id" : 103,
"UserName" : "Robert",
"UserMessage" : "Bye",
"UserMessagePostDate" : new Date["2021-10-31"],
"Country" : " New Zealand"
}
]]
Hãy kiểm tra việc thực hiện
Sau đó, chúng tôi sẽ áp dụng truy vấn bên dưới cho bộ sưu tập để chuyển đổi trường ngày thành định dạng ngày này yyyy-mm-dd
db.country.aggregate[
[
{
$project: {
yearMonthDate: { $dateToString: { format: "%Y-%m-%d", date: "$UserMessagePostDate" } }
}
}
]
]
đầu ra
Đọc. Cách thay đổi tên bộ sưu tập trong MongoDB
Định dạng ngày MongoDB mặc định
Trong chủ đề này, bạn sẽ tìm hiểu mặc định định dạng ngày của MongoDB. MongoDB lưu trữ ngày ở UTC theo mặc định. Vì bạn đang ở Múi giờ Trung Âu, điều này có nghĩa là có chênh lệch một hoặc hai giờ tùy thuộc vào việc ngày đó nằm trong hay ngoài khoảng thời gian Giờ mùa hè [DST]. Năm 2021 DST bắt đầu vào ngày 14 tháng 3 và kết thúc vào ngày 7 tháng 11
Ở đây, chúng tôi sẽ chèn một số tài liệu vào bộ sưu tập với trường ngày tháng mặc định
Thí dụ
Các tài liệu sau đây sẽ chèn vào bộ sưu tập
db.detail.insertMany[[
{
"_id" : 1,
"Name" : "Larry",
"Age" : 23,
"Date" : new Date[],
"Country" : "United States of America"
},
{
"_id" : 2,
"Name" : "Chris",
"Age" : 26,
"Date" : new Date[],
"Country" : "Canada"
},
{
"_id" : 3,
"Name" : "Robert",
"Age" : 28,
"Date" : new Date[],
"Country" : "Australia"
}
]]
Ở đây, chúng ta đã định nghĩa trường Date trong tài liệu new Date[]. Và, điều này sẽ chèn ngày mặc định [ngày hiện tại]. Chúng tôi sẽ sử dụng find[] để trả lại tài liệu
Chúng tôi đã chèn thành công các tài liệu vào bộ sưu tập và trong phần này, bạn cũng có thể kiểm tra trường ngày tháng mặc định
Đọc. MongoDB tìm tài liệu được chèn lần cuối
Ví dụ định dạng ngày MongoDB ISO
Trong chủ đề này, chúng ta sẽ tìm hiểu ví dụ về định dạng ngày ISO. Date[] mới trả về ngày hiện tại dưới dạng đối tượng Date. Mongosh liên kết đối tượng Date với ISODate
Chúng ta có thể xác định một ngày cụ thể bằng cách chuyển chuỗi ngày ISO-8601 với một năm trong phạm vi bao gồm từ 0 đến 9999 tới hàm tạo Date[] mới hoặc hàm ISODate[]
Thí dụ
In this example, we will use the new Date[“”] and this will return the ISODate with the specified date.
Các tài liệu sau đây sẽ chèn vào bộ sưu tập bán hàng
new Date["2021-11-20T12:05:45"]
0Tại đây, trường ngày new Date[“2021-10-06”] sẽ trả về ISODate với ngày đã chỉ định
đầu ra
Phương thức find[] trả về các tài liệu của bộ sưu tập và phương thức pretty[] được sử dụng để hiển thị các tài liệu ở dạng dễ đọc
Đọc. MongoDB so sánh hai trường
Múi giờ định dạng ngày MongoDB
Trong chủ đề này, bạn sẽ tìm hiểu về múi giờ định dạng ngày của MongoDB. Như chúng ta biết rằng MongoDB lưu trữ ngày ở UTC theo mặc định
Nếu bạn đang ở Múi giờ Trung Âu thì điều này cho biết rằng có chênh lệch một hoặc hai giờ tùy thuộc vào việc ngày đó nằm trong hay ngoài khoảng thời gian Giờ tiết kiệm ánh sáng ban ngày [DST]. Năm 2021 DST bắt đầu vào ngày 14 tháng 3 và kết thúc vào ngày 7 tháng 11
MongoDB thường lưu trữ ngày ở dạng UTC và sau đó hiển thị chúng ở định dạng cục bộ, chúng tôi sẽ sử dụng hàm trợ giúp $dateToString hoặc hàm tổng hợp khác $dateToParts để giải quyết vấn đề này tùy thuộc vào những gì bạn muốn làm
Bây giờ, chúng ta sẽ hiểu múi giờ định dạng ngày MongoDB với sự trợ giúp của một ví dụ
ví dụ 1
Các tài liệu sau đã được chèn vào bộ sưu tập múi giờ
new Date["2021-11-20T12:05:45"]
1Bây giờ, chúng tôi sẽ thực hiện truy vấn bên dưới để thêm trường ngày mới vào tài liệu theo múi giờ của họ
new Date["2021-11-20T12:05:45"]
2Ở đây, chúng tôi đã sử dụng hàm tổng hợp trong đó $addFields được sử dụng để thêm trường mới “bây giờ” vào tài liệu và $dateToString được sử dụng để lấy múi giờ theo trường “tz”
đầu ra
ví dụ 2
Múi giờ có thể được xác định bằng cách sử dụng định danh múi giờ Olson [e. g.
new Date["2021-11-21"]
3, new Date["2021-11-21"]
4] hoặc phần bù UTC [e. g. new Date["2021-11-21"]
5, _______5_______6]Tài liệu sau đây đã được chèn vào bộ sưu tập vật nuôi
new Date["2021-11-20T12:05:45"]
3Mã định danh múi giờ Olson
Chúng tôi sẽ chạy truy vấn bên dưới trong đó chuỗi ngày ở ba múi giờ khác nhau, mỗi múi giờ sử dụng ID múi giờ Olson
new Date["2021-11-20T12:05:45"]
4đầu ra
Đọc. MongoDB xóa một phần tử khỏi mảng
Định dạng ngày MongoDB thành chuỗi
Trong chủ đề này, bạn sẽ học cách chuyển đổi định dạng ngày MongoDB thành chuỗi. Chúng tôi sẽ sử dụng toán tử đường dẫn tổng hợp $dateToString để chuyển đổi một đối tượng ngày đã cho thành một chuỗi. Hãy hiểu rõ hơn điều này với sự giúp đỡ của một ví dụ
Thí dụ
Tài liệu sau đây đã được chèn vào bộ sưu tập địa chỉ
new Date["2021-11-20T12:05:45"]
5Bây giờ, chúng tôi sẽ áp dụng đoạn mã sau để trả về chuỗi ngày từ trường Ngày trong tài liệu đó
new Date["2021-11-20T12:05:45"]
6Ở đây, chúng tôi đã sử dụng hàm tổng hợp trong đó chúng tôi lưu trữ chuỗi ngày vào một trường mới “chuỗi dữ liệu” và hàm $dateToString được sử dụng để trả về chuỗi ngày theo định dạng đã xác định “%Y-%m-%dT%H. %M. %S. %LZ” từ trường Ngày trong tài liệu đó
đầu ra
Đọc. MongoDB tìm theo ID
MongoDB định dạng ngày UTC
Trong chủ đề này, bạn sẽ học cách chuyển đổi ngày thành định dạng ngày MongoDB UTC. Chúng tôi sẽ sử dụng chức năng tổng hợp $dateToString để chuyển đổi định dạng ngày thành UTC
Thí dụ
Tài liệu sau đây đã được chèn vào bộ sưu tập địa chỉ. Đây là cùng một bộ sưu tập mà chúng tôi đã sử dụng trong chủ đề trước
new Date["2021-11-20T12:05:45"]
5Bây giờ, chúng tôi sẽ áp dụng đoạn mã sau để trả về ngày UTC từ trường Ngày trong tài liệu đó
new Date["2021-11-20T12:05:45"]
8Ở đây, chúng tôi đã sử dụng chức năng tổng hợp nơi chúng tôi lưu trữ chuỗi ngày vào một trường mới “UTC”. Sau đó, hàm $dateToString được sử dụng để trả về chuỗi ngày theo định dạng đã xác định “%Y-%m-%dT%H. %M “ và múi giờ UTC từ trường Ngày trong tài liệu đó
đầu ra
Đọc. Truy vấn riêng biệt trong MongoDB
MongoDB chuyển đổi chuỗi thành định dạng ngày
Trong chủ đề này, bạn sẽ học cách chuyển đổi chuỗi sang định dạng ngày tháng. Nếu bạn có ngày được lưu dưới dạng chuỗi trong bộ sưu tập MongoDB, bạn có thể chuyển đổi chúng thành loại Ngày BSON nếu cần
Về cơ bản có 3 cách để chuyển đổi một chuỗi thành một ngày trong MongoDB
- Toán tử $dateFromString
- Toán tử $toDate
- Toán tử $convert
Thí dụ
Tài liệu sau đây đã được đưa vào bộ sưu tập của những chú chó
new Date["2021-11-20T12:05:45"]
91. Toán tử $dateFromString .
Toán tử đường ống tổng hợp $dateFromString được sử dụng để chuyển đổi một ngày thành một chuỗi
Khối mã sau đây được sử dụng để chuyển đổi chuỗi
new Date["2021-11-21"]
0Ở đây, trong đối số chuỗi ngày tháng, bạn phải xác định chuỗi mà bạn muốn chuyển đổi thành ngày tháng
đầu ra
Bạn có thể thấy rằng ngày hiện được chuyển đổi trong trình trợ giúp ISODate có nghĩa là ngày đó là một đối tượng Ngày
2. Toán tử $toDate .
Toán tử đường ống tổng hợp $toDate được sử dụng để chuyển đổi một giá trị thành một ngày. Ở đây, giá trị có thể là bất kỳ loại nào có thể được chuyển đổi thành ngày, đó là số, chuỗi và objectIds
Khối mã sau đây được sử dụng để chuyển đổi chuỗi thành ngày tháng
new Date["2021-11-21"]
1đầu ra
3. Toán tử $convert .
Toán tử $convert được thiết kế riêng để chuyển đổi giữa loại này sang loại khác. Trường bạn muốn chuyển đổi được chỉ định bởi tham số đầu vào và loại bạn muốn chuyển đổi nó thành được chỉ định bởi tham số “to”
new Date["2021-11-21"]
2đầu ra
Ghi chú
Toán tử $convert giữ các tham số onError và onNull cung cấp thông báo để sử dụng trong trường hợp có lỗi hoặc giá trị null. Khối hoạt động tổng hợp này cung cấp thông báo lỗi thân thiện với người dùng trong tài liệu đầu ra khi dừng
Bạn cũng có thể muốn đọc các hướng dẫn sau về MongoDB
- Hiển thị dữ liệu MongoDB trong HTML
- MongoDB truy vấn lồng nhau
- MongoDB đếm với các ví dụ
- MongoDB tổng hợp $count
- MongoDB chỉ trả về các phần tử mảng phù hợp
Vì vậy, trong hướng dẫn này, chúng ta đã tìm hiểu về định dạng ngày MongoDB. Và chúng tôi đã minh họa chủ đề này bằng các ví dụ khác nhau. Đây là danh sách các chủ đề mà chúng ta đã thảo luận trong hướng dẫn này
- Truy vấn định dạng ngày MongoDB
- Định dạng ngày MongoDB dd/mm/yyyy
- Định dạng ngày MongoDB yyyy-mm-dd
- Định dạng ngày MongoDB mặc định
- Ví dụ định dạng ngày MongoDB ISO
- Múi giờ định dạng ngày MongoDB
- Định dạng ngày MongoDB thành chuỗi
- MongoDB định dạng ngày UTC
- MongoDB chuyển đổi chuỗi thành định dạng ngày
Bijay
Tôi là Bijay có hơn 15 năm kinh nghiệm trong ngành công nghiệp phần mềm. Trong thời gian này, tôi đã làm việc trên MariaDB và sử dụng nó trong rất nhiều dự án. Hầu hết độc giả của chúng tôi đến từ Hoa Kỳ, Canada, Vương quốc Anh, Úc, New Zealand, v.v.
Bạn muốn tìm hiểu MariaDB? . Ngoài ra, tôi là MVP của Microsoft