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

MongoDB $ toDate

Trong MongoDB, $toDate toán tử tổng hợp chuyển đổi một giá trị thành một ngày

$toDate nhận bất kỳ biểu thức hợp lệ nào. Nếu không thể chuyển đổi biểu thức thành ngày tháng, nó sẽ trả về một lỗi. Nếu biểu thức là null hoặc bị thiếu, nó trả về null .

Ví dụ

Giả sử chúng ta có một bộ sưu tập được gọi là samples với tài liệu sau:

{
	"_id" : ObjectId("60066f1cc8eb4369cf6ad9c9"),
	"double" : 1613372035500.75,
	"decimal" : NumberDecimal("1613372035500.75"),
	"long" : NumberLong("1613372035500"),
	"string" : "2021-02-15 06:53:55"
}

Chúng tôi có thể sử dụng truy vấn sau để trả về từng giá trị đó dưới dạng Ngày.

db.samples.aggregate(
  [
    {
      $project:
        {
          _id: 0,
          "ObjectId": { $toDate: "$_id" },
          "double": { $toDate: "$double" },
          "decimal": { $toDate: "$decimal" },
          "long": { $toDate: "$long" },
          "string": { $toDate: "$string" }
        }
    }
  ]
).pretty()

Kết quả:

{
	"ObjectId" : ISODate("2021-01-19T05:33:16Z"),
	"double" : ISODate("2021-02-15T06:53:55.500Z"),
	"decimal" : ISODate("2021-02-15T06:53:55.500Z"),
	"long" : ISODate("2021-02-15T06:53:55.500Z"),
	"string" : ISODate("2021-02-15T06:53:55Z")
}

Như mong đợi, tất cả các trường được trả về với các giá trị tương ứng của chúng được chuyển đổi thành giá trị Ngày.

Bạn có thể nhận thấy rằng trường ObjectId trả về một ngày khác với những trường khác. Điều này là do _id giá trị của trường phản ánh ngày tài liệu được tạo, trong khi các ngày khác chỉ là ngày tùy ý do tôi tạo. Tìm hiểu thêm về ObjectId bên dưới.

Loại đầu vào

$toDate toán tử chấp nhận các kiểu đầu vào sau:

  • Nhân đôi
  • Số thập phân
  • Dài
  • Chuỗi (phải là một chuỗi ngày hợp lệ)
  • ObjectId

Tìm hiểu thêm về những điều này bên dưới.

Loại số

Khi sử dụng các kiểu số (Đôi, Thập phân và Dài), $toDate trả về một ngày tương ứng với số mili giây được đại diện bởi giá trị. Đối với Double và Decimal, đây là giá trị bị cắt ngắn. $toDate toán tử diễn giải các giá trị số như sau:

  • Giá trị dương tương ứng với số mili giây kể từ ngày 1 tháng 1 năm 1970.
  • Giá trị âm tương ứng với số mili giây trước ngày 1 tháng 1 năm 1970.

Các loại chuỗi

Khi sử dụng kiểu chuỗi, chuỗi phải là chuỗi ngày hợp lệ. Ví dụ:

  • "2021-02-15"
  • "15 February 2021"
  • "2021-02-15 06:53:55"
  • "2021-02-15 06:53:55+1100"

Bạn không thể sử dụng các ngày không đầy đủ hoặc các giá trị không hợp lệ, chẳng hạn như "Monday" , "March" , "2020" , v.v.

ObjectId

Giá trị ObjectId là các giá trị thập lục phân 12 byte bao gồm:

  • Giá trị dấu thời gian 4 byte, đại diện cho việc tạo ObjectId, được đo bằng giây kể từ kỷ nguyên Unix.
  • Một 5 byte là một giá trị ngẫu nhiên
  • Bộ đếm tăng 3 byte, được khởi tạo thành giá trị ngẫu nhiên.

$toDate toán tử trả về phần dấu thời gian dưới dạng Ngày.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:tổng hợp trường thêm $ dự án với giá trị tĩnh

  2. error:tham số kiểu `D` phải được sử dụng làm tham số kiểu cho một số kiểu cục bộ

  3. Kiến thức cơ bản về triển khai bộ bản sao MongoDB và các đoạn bằng con rối

  4. Chọn tài liệu trong đó tất cả các giá trị trong một trường mảng tồn tại trong một mảng khác

  5. Cách sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trong MongoDB