2016-03-02 101 views
0

這是我在MongoDB中user收集使用GTE和LTE查詢

{ 
    "_id" : NumberLong(104060), 
    "age" : 41, 
    "username" : "[email protected]", 
    "roles" : [ 
     "ROLE_USER" 
    ], 
    "firstName" : "Apurva", 
    "lastName" : "Shah", 
    "email" : "[email protected]", 
    "createdDate" : ISODate("2016-02-08T12:23:02.001Z"), 
} 

我使用這樣

criteria = new Criteria().orOperator(name, email) 
      .andOperator(genderCriteria).and("_id").ne(id).and("createdDate").gte(startDate).lte(endDate); 

標準,當我路過startdateenddate像沒有得到準確的結果在MongoDB中:

Start date is::2015-12-16T00:00:00.000+05:30 
end date is::2016-02-08T00:00:00.000+05:30 

這個user不來,但是當我改變我的enddate

end date is::2016-02-09T00:00:00.000+05:30 

那麼它是未來。 如果我使用gtelte那麼它必須包含日期也等於。就像當我通過日期從16 dec到8 feb,然後它給所有users創建日期16到7 feb。不包括user與創建日期8二月,當我通過16十二月至九十二feb然後它包括八feb user.Is什麼都做錯了我很迷惑。請幫助。 謝謝。

回答

2

你不會得到這個

Start date is::2015-12-16T00:00:00.000+05:30 
end date is::2016-02-08T00:00:00.000+05:30 

結果檢查創建日期爲userISODate("2016-02-08T12:23:02.001Z")日期等於但不time.Overall用戶的日期是不是在你的範圍.Mongo它檢查日期和時間平等。

的一個解決方案,您可以在您的應用程序側org.apache.commons.lang.timeApache Commons Lang

DateUtils.addSeconds(createdDate,24*60*60-1); 

重要假設你會在請求。你只發送日期添加額外的時間24*60*60 - 1這個Date createdDate使用DateUtils必須添加上面的代碼,以預處理您的請求對象,但不是當你插入。當有請求來添加這段代碼。它會正常工作

+0

thanxx #sarath克里希,它的工作.... :) –

相關問題