使用 gte 和 lte 查询未在 mongodb 中获得准确结果
Not getting accurate result in mongodb using gte and lte query
这是我在mongodb
中的user
collection
{
"_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
那么它必须包括也等于的日期。比如,当我将日期从 12 月 16 日传递到 2 月 8 日时,它会给出所有 users
创建日期为 2 月 16 日至 7 日。不包括创建日期为 2 月 8 日的 user
,当我从 12 月 16 日到 2 月 9 日时,它包括 2 月 8 日 user.Is 我做错了什么我 confuse.Please 帮助。
谢谢你。
你不会得到这个结果
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")
日期相等但不相等 time.Overall 您的用户日期不在您的范围内。Mongo 它检查日期和时间都相等。
您可以拥有的一个解决方案是在您的应用程序端使用 org.apache.commons.lang.time
(Apache Commons Lang) 中的 DateUtils
添加额外的时间 24*60*60 - 1
到此 Date createdDate
DateUtils.addSeconds(createdDate,24*60*60-1);
重要假设您将仅在请求中发送日期。您必须添加上面的代码来预处理您的请求对象但是当您插入。每当请求到来时,添加这段 code.It 就可以正常工作
这是我在mongodb
中的user
collection
{
"_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
那么它必须包括也等于的日期。比如,当我将日期从 12 月 16 日传递到 2 月 8 日时,它会给出所有 users
创建日期为 2 月 16 日至 7 日。不包括创建日期为 2 月 8 日的 user
,当我从 12 月 16 日到 2 月 9 日时,它包括 2 月 8 日 user.Is 我做错了什么我 confuse.Please 帮助。
谢谢你。
你不会得到这个结果
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")
日期相等但不相等 time.Overall 您的用户日期不在您的范围内。Mongo 它检查日期和时间都相等。
您可以拥有的一个解决方案是在您的应用程序端使用 org.apache.commons.lang.time
(Apache Commons Lang) 中的 DateUtils
添加额外的时间 24*60*60 - 1
到此 Date createdDate
DateUtils.addSeconds(createdDate,24*60*60-1);
重要假设您将仅在请求中发送日期。您必须添加上面的代码来预处理您的请求对象但是当您插入。每当请求到来时,添加这段 code.It 就可以正常工作