2016-12-19 32 views
0

如何找到MongoDB中兩個日期範圍之間的對象如何找到兩個日期範圍的對象MongoDB中

{ 
"_id" : ObjectId("583b47e6d991392532ec6ac0"), 
    "title" : "Title1", 
    "description" : "Description1", 
    "createdOn" : "10-Nov-2016 02:23 AM" 

} 

{ 
"_id" : ObjectId("583b47e6d991392532ec6ac1"), 
    "title" : "Title2", 
    "description" : "Description2", 
    "createdOn" : "15-Nov-2016 02:23 AM" 

} 

{ 
"_id" : ObjectId("583b47e6d991392532ec6ac2"), 
    "title" : "Title3", 
    "description" : "Description3", 
    "createdOn" : "28-Nov-2016 02:23 PM" 

} 

如何尋找到28月-2016 10 - 11月-2016 00:00 AM之間的物體12:59 MongoDB中

此日期範圍內我想這一個,但遇到錯誤

db.tasks.find({created_on: {$gte: ISODate("10-Nov-2016 00:00 AM"),$lt: ISODate("28-Nov-2016 12:59 PM")}}) 

我使用JAVA和後端的MongoDB的 請幫我...

我的錯誤是這樣

2016-12-19T21:29:20.823+0530 E QUERY Error: invalid ISO date 
    at Error (<anonymous>) 
    at ISODate (src/mongo/shell/types.js:64:15) 
    at (shell):1:35 at src/mongo/shell/types.js:64 
+0

如果你還可以在你的問題中包含錯誤([編輯]鏈接) – chridam

+0

你會得到什麼錯誤? – mayk93

+0

@chiridam我更新我的錯誤 –

回答

0

看起來你存儲日期字符串。首先更改插入語句以使用ISODate

例子:ISODate("2016-12-19T06:01:17.171Z")

所有日期將被保存爲蒙戈DB UTC。

當您收藏時,您應該看到類似這樣的內容。

{ 
"_id" : ObjectId("583b47e6d991392532ec6ac2"), 
"title" : "Title3", 
"description" : "Description3", 
"createdOn" : ISODate("2016-12-19T06:01:17.171Z") 
} 

之後,使用比較運算符來查找日期範圍中的日期非常簡單。

db.tasks.find({created_on: {$gte: ISODate("2016-10-19T00:00:00.000Z"),$lt: ISODate("2016-10-28T00:00:00.000Z")}}) 
+0

是否可以從字符串中獲取日期範圍,任何方式Sagr Ji –

+0

比較將無法在日期字符串類型上正確運行。所以你必須將它們保存爲日期類型。你不可能改變這種類型嗎?我唯一可以想到的使用Java的其他選擇是獲取所有行並解析日期並在迭代集合時比較它們。這不會有效。 – Veeram

相關問題