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.