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

Truy vấn ngày với ISODate trong mongodb dường như không hoạt động

Mặc dù $date là một phần của MongoDB Extended JSON và đó là những gì bạn nhận được làm mặc định với mongoexport Tôi không nghĩ rằng bạn thực sự có thể sử dụng nó như một phần của truy vấn.

Nếu thử tìm kiếm chính xác với $date như bên dưới:

db.foo.find({dt: {"$date": "2012-01-01T15:00:00.000Z"}})

bạn sẽ gặp lỗi:

error: { "$err" : "invalid operator: $date", "code" : 10068 }

Hãy thử điều này:

db.mycollection.find({
    "dt" : {"$gte": new Date("2013-10-01T00:00:00.000Z")}
})

hoặc (nhận xét sau của @ user3805045):

db.mycollection.find({
    "dt" : {"$gte": ISODate("2013-10-01T00:00:00.000Z")}
})

ISODate cũng có thể được yêu cầu để so sánh ngày tháng mà không có thời gian (được lưu ý bởi @MattMolnar).

Theo Kiểu dữ liệu trong Mongo Shell cả hai phải tương đương nhau:

Mongo shell cung cấp các phương thức khác nhau để trả về ngày tháng, dưới dạng một chuỗi hoặc dưới dạng đối tượng Ngày tháng:

  • Phương thức date () trả về ngày hiện tại dưới dạng một chuỗi.
  • hàm tạo Date () mới trả về đối tượng Ngày bằng trình bao bọc ISODate ().
  • Hàm tạo ISODate () trả về đối tượng Ngày bằng trình bao bọc ISODate ().

và sử dụng ISODate vẫn nên trả về đối tượng Ngày.

{"$date": "ISO-8601 string"} có thể được sử dụng khi yêu cầu biểu diễn JSON nghiêm ngặt. Một ví dụ có thể là trình kết nối Hadoop.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB.Driver.Builders cách nhóm và lấy điểm trung bình

  2. MongoDB - Truy vấn trong khoảng thời gian hàng giờ

  3. mongodb $ tồn tại luôn trả về 0

  4. MongoDB $ setOnInsert

  5. MongoDB $ cos