Tôi đã lưu trữ giá trị dưới dạng java.util.Date() trong bộ sưu tập của mình, nhưng khi tôi truy vấn để nhận giá trị giữa hai ngày cụ thể, tôi sẽ nhận được các giá trị ngoài phạm vi. Dưới đây là mã của tôi:Truy vấn Java/MongoDB theo ngày
để chèn
BasicDBObject object = new BasicDBObject();
...
object.put("dateAdded", new java.util.Date());
collection.insert(object);
để truy vấn
BasicDBObject query = new BasicDBObject();
query.put("dateAdded", new BasicDBObject("$gte", fromDate));
query.put("dateAdded", new BasicDBObject("$lte", toDate));
collection.find(query).sort(new BasicDBObject("dateAdded", -1));
khi tôi truy vấn giữa Wed Jul 27 16:54:49 EST 2011
và Wed Jul 27 16:54:49 EST 2011
(về cơ bản FROMNgày = NHCTVN), tôi nhận được đối tượng với số ngày như Tue Jul 26 09:43:37 EST 2011
mà nên chắc chắn không thể. Tôi đang thiếu gì ở đây?
Mẹo tuyệt vời! Vì vậy, về cơ bản mỗi khi tôi muốn truy vấn trên cùng một lĩnh vực với các tiêu chí khác nhau tôi phải sử dụng quyền xây dựng? tốt để biết! Bạn tìm thấy cái này ở đâu? có bất kỳ tài liệu nào mà tôi không biết? (vì hướng dẫn java chính thức của Mongodb khá nghèo!) – Guillaume
@Guillaume Không chính xác. Bạn cũng có thể tạo và điền 'BasicDBObject', trình xây dựng chỉ là trình trợ giúp cho phép thực hiện nó trong một chế độ an toàn duy nhất. Vấn đề là 'DBObject' (giống như tất cả 'Map' trong Java) chỉ có thể chứa các khóa duy nhất. Và bạn mất giá trị trước đó khi đặt giá trị mới bằng cùng một khóa. Ngoài ra, hướng dẫn chính thức cũng có ví dụ về cách sử dụng nhiều toán tử trên cùng một lĩnh vực: http://www.mongodb.org/display/DOCS/Java+Tutorial#JavaTutorial-GettingASetofDocumentsWithaQuery – pingw33n
Đáng ngạc nhiên khi tìm câu trả lời cho câu hỏi đó. –