(Tôi biết tôi chỉ hỏi một câu hỏi về việc này, nhưng câu trả lời đưa tôi đến hỏi câu hỏi này, tôi nghĩ rằng nó sẽ là thích hợp để tạo ra khác)Java & MongoDB truy vấn cho các vấn đề ISODate
Tôi có một đối tượng trong MongoDB trông như thế này:
{
"id" : NumberLong(12345),
"dateModified" : ISODate("2015-01-21T19:43:17.440Z")
}
truy vấn tôi cần phải tạo ra để lấy này sẽ giống như thế này (ngày trong đối tượng rơi giữa hai ngày này):
db.history.find({"dateModified" : { "$gte" : ISODate("2015-01-19T00:00:00.000Z") , "$lte" : ISODate("2015-01-25T00:00:00.000Z")}});
Thật không may, tôi đang sử dụng Java và mọi thứ đang diễn ra vui nhộn. Dưới đây là truy vấn Java của tôi:
java.util.Date fromDate;
java.util.Date toDate;
BasicDBObject searchQuery = new BasicDBObject();
searchQuery.put("dateModified", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());
Khá nhiều ở khắp mọi nơi tôi đi trên internet cho thấy rằng tôi sử dụng trên mã Java để thực hiện truy vấn này, nhưng sản lượng văn bản cho truy vấn này là:
{"dateModified" : { "$gte" : { "$date" : "2015-01-19T00:00:00.000Z"} , "$lte" : { "$date" : "2015-01-25T00:00:00.000Z"}}
Truy vấn này trả về không có kết quả vì nó không truy vấn theo định dạng ISODate. EDIT: Những gì tôi có nghĩa là ở đây là nếu tôi sử dụng truy vấn trên trong vỏ mongo tôi nhận được không có kết quả, nhưng nếu tôi sử dụng truy vấn đầu tiên tôi đăng, tôi nhận được kết quả.
Câu hỏi của tôi là tại sao điều này không tự động chuyển thành ISODate như mọi người đã nói? Hoặc, tôi có thể làm gì để đảm bảo truy vấn này chuyển đổi sang định dạng ISODate?
sử dụng https://github.com/mongodb/morphia thân thiện hơn. – ulima69
Nếu nó hoạt động, thì đừng lo lắng về nó. https://jira.spring.io/browse/DATAMONGO-671 –