簡體   English   中英

Java和MongoDB查詢ISODate問題

[英]Java & MongoDB query for ISODate problems

(我知道我剛問了一個關於這個的問題,但答案引導我提出這個問題,我認為創建另一個問題是合適的)

我在MongoDB中有一個如下所示的對象:

{
    "id" : NumberLong(12345),
    "dateModified" : ISODate("2015-01-21T19:43:17.440Z")
}

我需要創建的用於檢索它的查詢應該如下所示(對象中的日期介於這兩個日期之間):

db.history.find({"dateModified" : { "$gte" : ISODate("2015-01-19T00:00:00.000Z") , "$lte" : ISODate("2015-01-25T00:00:00.000Z")}});

不幸的是,我正在使用Java,事情變得有趣。 這是我的Java查詢:

java.util.Date fromDate;
java.util.Date toDate;
BasicDBObject searchQuery = new BasicDBObject();

searchQuery.put("dateModified", BasicDBObjectBuilder.start("$gte", fromDate).add("$lte", toDate).get());

幾乎我到網上的每個地方都建議我使用上面的Java代碼來執行此查詢,但此查詢的文本輸出是:

{"dateModified" : { "$gte" : { "$date" : "2015-01-19T00:00:00.000Z"} , "$lte" : { "$date" : "2015-01-25T00:00:00.000Z"}}

此查詢不返回任何結果,因為它不以ISODate格式查詢。 編輯:我的意思是,如果我在mongo shell中使用上述查詢,我​​得不到任何結果,但如果我使用我發布的第一個查詢,我會得到結果。

我的問題是為什么這不會像所有人都說的那樣自動轉換為ISODate? 或者,我該怎么做才能確保此查詢轉換為ISODate格式?

如果您實際從Java運行該查詢,它將起作用。 但是將文本輸出粘貼到shell中不會,因為BSON文檔的Java驅動程序的文本輸出格式是MongoDB Extended JSON ,與mongoexport等工具使用的格式相同。 但是,shell不理解這種格式。 有一個Jira問題請求擴展JSON的shell支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM