这是我在mongodb中的user
集合
{
"_id" : NumberLong(104060),
"age" : 41,
"username" : "appubhai75@gmail.com",
"roles" : [
"ROLE_USER"
],
"firstName" : "Apurva",
"lastName" : "Shah",
"email" : "appubhai75@gmail.com",
"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);
当我通过startdate
和enddate
时:
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
然后它即将到来。
如果我使用gte
和lte
,那么它必须包含等于的日期。就像,当我将日期从16 dec传递到8 feb时,它会给出所有users
创建日期为16到7个月。不包括user
创建日期8 feb,当我通过16 dec到9 feb然后它包括8 feb user.Is我做错了什么我很困惑。请帮助。
谢谢。
答案 0 :(得分:2)
你不会得到这个
的结果Start date is::2015-12-16T00:00:00.000+05:30
end date is::2016-02-08T00:00:00.000+05:30
检查创建日期user
ISODate("2016-02-08T12:23:02.001Z")
日期是否相等但不是时间。总的来说,您的用户日期不在您的范围内。全部检查日期和时间是否相等。
您可以拥有的一个解决方案是在您的应用程序端使用24*60*60 - 1
Date createdDate
DateUtils
中的org.apache.commons.lang.time
向此DateUtils.addSeconds(createdDate,24*60*60-1);
添加额外时间a= ['and', 'people', 'them', 'become', 'treat', 'is', 'they', 'see', 'the', 'way', 'you', 'what']
b= [3, 6, 4, 6, 5, 2, 4, 3, 3, 3, 3, 4]
b
重要假设您只会在请求中发送日期。您必须添加上述代码以预先处理您的请求对象,但不能在插入时。当有任何请求时来添加这段代码。它会正常工作