Truy vấn Phạm vi Ngày (Tháng hoặc Ngày cụ thể) trong MongoDB Cookbook có một lời giải thích rất hay về vấn đề này, nhưng dưới đây là điều mà tôi đã tự mình thử và nó có vẻ hiệu quả.
items.save({
name: "example",
created_at: ISODate("2010-04-30T00:00:00.000Z")
})
items.find({
created_at: {
$gte: ISODate("2010-04-29T00:00:00.000Z"),
$lt: ISODate("2010-05-01T00:00:00.000Z")
}
})
=> { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }
Dựa trên các thử nghiệm của tôi, bạn sẽ cần phải tuần tự hóa ngày tháng của mình thành một định dạng mà MongoDB hỗ trợ, vì những điều sau đây cho kết quả tìm kiếm không mong muốn.
items.save({
name: "example",
created_at: "Sun May 30 18.49:00 +0000 2010"
})
items.find({
created_at: {
$gte:"Mon May 30 18:47:00 +0000 2015",
$lt: "Sun May 30 20:40:36 +0000 2010"
}
})
=> { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }
Trong ví dụ thứ hai, không có kết quả nào được mong đợi, nhưng vẫn có một kết quả đạt được. Điều này là do so sánh chuỗi cơ bản đã được thực hiện.