使用Jongo在MongoDB中查找具有$lt操作数的5天旧文档-查询返回空结果

使用Jongo在MongoDB中查找具有$lt操作数的5天旧文档-查询返回空结果,mongodb,mongodb-query,jongo,Mongodb,Mongodb Query,Jongo,MongoDB集合中的数据具有格式 { "_id" : ObjectId("57a1bfc103c8851a98dba3b2"), "createdOn": NumberLong("1470218177561"), "name": "Raja", "description": "Employee Raja" } Mongo数据库查询和结果 > new Date(1470218177561); ISODate("2016-08-03T09:56:17.561Z") > new D

MongoDB集合中的数据具有格式

{ "_id" : ObjectId("57a1bfc103c8851a98dba3b2"), "createdOn": NumberLong("1470218177561"), "name": "Raja", "description": "Employee Raja" }
Mongo数据库查询和结果

> new Date(1470218177561);
 ISODate("2016-08-03T09:56:17.561Z")

> new Date(1888888888888);
 ISODate("2029-11-09T03:21:28.888Z")

> db.employee.find("{createdOn: { $lt: new Date(NumberLong(1888888888888)) }}");
最后一个查询没有返回没有任何错误的结果,因此我无法确定我的查询出了什么问题

基本上,我们希望通过Jongo中的“$lt运算符”查找过去5天的记录。尝试了下一个查询,但它也不起作用

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -5);
Date dateBefore = cal.getTime();
collection.find("{createdOn: {$gte : #}}", dateBefore).as(type);
谢谢。

你在比较

NumberLong(“1470218177561”)
vs
新日期(NumberLong(1888888888))

而不是比较

NumberLong(“1470218177561”)
vs
NumberLong(1888888888)

在您的特定情况下,查询将是

db.employee.find( { createdOn: { $lt: NumberLong(1888888888888) } } );
db.employee.find( { createdOn: { $gt: new Date(new Date()).getTime() - 5 * 24 * 60 * 60 * 1000 } } );

要查找5天以前的文档,您可以

以毫秒为单位获取当前日期的步骤

> new Date(new Date()).getTime()
1470232681000
要查找5天以前的文档,请在5天前的日期使用
$gt
运算符

> new Date(new Date()).getTime() - 5 * 24 * 60 * 60 * 1000
1469800939000
因此,查询将是

db.employee.find( { createdOn: { $lt: NumberLong(1888888888888) } } );
db.employee.find( { createdOn: { $gt: new Date(new Date()).getTime() - 5 * 24 * 60 * 60 * 1000 } } );

和Jongo得到同样的结果

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
employees.find("{ createdOn: { $gt:  # } }", cal.getTimeInMillis() - 5 * 24 * 60 * 60 * 1000); 
您对Jongo的查询也存在同样的问题。您试图按
Date
类型查找,但集合中文档的日期字段是
NumberLong
,这是
Date
类型的毫秒长表示形式


您无法使用诸如
$gt
之类的运算符比较两种不同的类型

删除双引号:
db.employee.find({createdOn:{$lt:newdate(NumberLong(18888888))})
Still mongo shell即使在删除双引号后仍返回空记录基本上我希望获取小于给定日期的记录。请让我知道你的问题above@Kathire更新了答案非常感谢你的回答。发布另一个与mongo api查询相关的问题。如果可能,请提供帮助HI,样本收集:员工记录:{“_id”:ObjectId(“57a1bfc103c8851a98dba3b2”),“createdOn”:“1470218177561”,“name”:“Raja”,“description”:“Employee Raja”}下面的查询不工作Calendar cal=Calendar.getInstance();计算添加(日历日期,-5);Date dateBefore=cal.getTime();查找({createdOn:{$gte:#}}),dateBefore.as(type);基本上我是在寻找过去5天的记录。谢谢。是的,但它不允许我在90分钟前创建。你能帮我吗?或者你能帮我发邮件吗?提前谢谢。