MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách định dạng ngày trong MongoDB

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.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sao chép tài liệu trong MongoDB bằng cách sử dụng _id mới

  2. MongoDB - khác biệt với truy vấn không sử dụng chỉ mục

  3. Model.find (). ToArray () tuyên bố không có phương thức .toArray ()

  4. Truy vấn các đối tượng được nhúng trong Mongoid / rails 3 (Toán tử thấp hơn, Min và sắp xếp)

  5. Trong MongoDB, làm cách nào để bạn sử dụng $ set để cập nhật giá trị lồng nhau / tài liệu nhúng?