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

3 cách để có được một tuần từ một ngày trong MongoDB

MongoDB cung cấp các tùy chọn khác nhau để trích xuất các phần ngày tháng.

Bài viết này trình bày 3 cách để trả lại phần tuần từ một ngày trong MongoDB.

Dữ liệu mẫu

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:12Z") }
{ "_id" : 3, "name" : "Fluffy", "born" : ISODate("2020-09-24T10:30:00Z") }

Các ví dụ sau đây minh họa các tùy chọn khác nhau để trả lại phần tuần từ born trường của các tài liệu đó.

$week Nhà điều hành

$week toán tử trả về tuần trong năm cho một ngày dưới dạng số từ 0 đến 53.

Do đó, chúng tôi có thể chạy mã sau để trả về tuần từ born trong tài liệu trên.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" }
        }
    }
  ]
)

Kết quả:

{ "birthWeek" : 1 }
{ "birthWeek" : 49 }
{ "birthWeek" : 38 }

Bạn cũng có thể chỉ định múi giờ khi sử dụng $week nhà điều hành.

Xem MongoDB $week để biết thêm thông tin và ví dụ.

$dateToString Nhà điều hành

$dateToString toán tử chuyển đổi một đối tượng ngày thành một chuỗi theo định dạng do người dùng chỉ định. Do đó, người dùng có thể chỉ định rằng chỉ phần tuần được trả lại nếu được yêu cầu.

Có các chỉ định định dạng cho từng phần ngày tháng. Đối với phần trong tuần của ngày, %U định dạng định dạng trả về tuần trong năm và %V định dạng định dạng trả về tuần trong năm ở định dạng ISO 8601.

Ví dụ:

db.cats.aggregate(
   [
     {
       $project: {
         _id: 0,
          birthWeek: { $dateToString: { format: "%U", date: "$born" } },
          birthWeekISO: { $dateToString: { format: "%V", date: "$born" } }
       }
     }
   ]
)

Kết quả:

{ "birthWeek" : "01", "birthWeekISO" : "53" }
{ "birthWeek" : "49", "birthWeekISO" : "49" }
{ "birthWeek" : "38", "birthWeekISO" : "39" }

Xem MongoDB $dateToString để biết thêm thông tin và ví dụ.

Cũng xem MongoDB $dateToString Các mã định dạng cho danh sách các mã định dạng có thể được sử dụng với toán tử này.

$isoWeek Nhà điều hành

Nếu bạn cần trả lại tuần ở định dạng ISO 8601, hãy sử dụng $isoWeek . Năm ISO 8601 bắt đầu từ Thứ Hai của tuần 1 và kết thúc vào Chủ Nhật của tuần trước.

Ví dụ:

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Kết quả:

{ "birthIsoWeek" : 53 }
{ "birthIsoWeek" : 49 }
{ "birthIsoWeek" : 39 }

Kết quả này khác với khi chúng tôi sử dụng $week nhà điều hành.

Dưới đây là một ví dụ cho thấy sự khác biệt.

db.cats.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          birthWeek: { $week: "$born" },
          birthIsoWeek: { $isoWeek: "$born" }
        }
    }
  ]
)

Kết quả:

{ "birthWeek" : 1, "birthIsoWeek" : 53 }
{ "birthWeek" : 49, "birthIsoWeek" : 49 }
{ "birthWeek" : 38, "birthIsoWeek" : 39 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dịch vụ MongoDB không chạy trong Fedora

  2. MongoDB khác với cơ sở dữ liệu SQL như thế nào

  3. Cách xuất kết quả truy vấn MongoDB sang tệp CSV

  4. MongoDB $ exp

  5. node.js không thể tìm thấy mô-đun 'mongodb'