2012-02-01 24 views
10

Tôi có một truy vấn Mongo để được thực thi:Mongo ISODate truy vấn trong Java

query = { "dateField" : { "$gte" : ISODate('2011-11-10T07:45:32.962Z') } } 

Khi tôi làm một db.Collection.find(query) trên vỏ Mongo, tôi có thể lấy kết quả.

Tôi có thể truy vấn điều này bằng cách sử dụng Java như thế nào? Tôi đã thử xây dựng một String dựa trên tham số Date. Nhưng trong quá trình xây dựng Chuỗi, nó cuối cùng được chuyển thành "ISODate('2011-11-10T07:45:32.962Z')" thay vì ISODate('2011-11-10T07:45:32.962Z') (không có dấu ngoặc kép xung quanh).

Cách tốt nhất để xây dựng truy vấn này bằng API Java là gì?

Cảm ơn!

+2

Không sử dụng chuỗi. Chuỗi không phải là ngày tháng. –

Trả lời

20

Sử dụng Java ngày thường - Tôi cũng khuyên các QueryBuilder:

Date d = new Date(); // or make a date out of a string... 
DBObject query = QueryBuilder.start().put("dateField").greaterThanEquals(d).get(); 
+0

Đã hiệu quả. Cảm ơn ! – Skynet

+2

Vâng, đó là Java tương đương với ISODate(). Thử chạy truy vấn, thay vì nhìn vào hàm toString(). –

4

Tôi có rất nhiều tìm kiếm và chi tiêu nhiều hơn trong việc tìm kiếm giờ làm thế nào để có được dữ liệu khi có ISODate trong mô hình Mongo.

Là hàm tạo mặc định cho ngày không được chấp nhận nên nó không hoạt động trong trường hợp của tôi.

BasicDBObject searchQuery = new BasicDBObject("_id" , 1); 
try { 
     searchQuery.append("timestamp",BasicDBObjectBuilder.start("$gte",new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS\'Z\'").parse("2015-12-07T10:38:17.498Z")).get()); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

Đây có phải là câu trả lời hoặc nhận xét không? Nếu đó là câu trả lời, vui lòng chỉnh sửa câu trả lời để làm rõ cách giải quyết câu hỏi. – Mogsdad

+0

Đây là câu trả lời, tôi nói rằng 'Date' đơn giản không hoạt động vì nó không được chấp nhận và điều này' SimpleDateFormat' đã hoạt động tốt trong trường hợp của tôi. – Root