2015-01-27 22 views
5

(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?

+0

sử dụng https://github.com/mongodb/morphia thân thiện hơn. – ulima69

+0

Nếu nó hoạt động, thì đừng lo lắng về nó. https://jira.spring.io/browse/DATAMONGO-671 –

Trả lời

2

Nếu bạn thực sự chạy truy vấn đó từ Java, nó sẽ hoạt động. Nhưng dán đầu ra văn bản vào vỏ sẽ không, bởi vì định dạng đầu ra văn bản của trình điều khiển Java cho tài liệu BSON là MongoDB Extended JSON, cùng định dạng được sử dụng bởi các công cụ như mongoexport. Tuy nhiên, định dạng này không được hiểu bởi trình bao. Có Jira issue yêu cầu hỗ trợ vỏ cho JSON mở rộng.

Các vấn đề liên quan