Javascript 按计算日期筛选mongo文档
我正在尝试按计算日期筛选读取查询。具体地说,我想获取其Javascript 按计算日期筛选mongo文档,javascript,mongodb,Javascript,Mongodb,我正在尝试按计算日期筛选读取查询。具体地说,我想获取其creationDate字段值早于当前日期24小时的所有文档。下面是我得到的,但它没有返回任何内容: db.user.find({creationDate: {$lt: {$subtract: [new Date(), 24 * 3600 * 1000]} }}) 起初我认为这可能是一个数据类型问题,但下面的查询返回预期的文档: db.user.find({creationDate: {$lt: new Date()}}) 下面的人工查询
creationDate
字段值早于当前日期24小时的所有文档。下面是我得到的,但它没有返回任何内容:
db.user.find({creationDate: {$lt: {$subtract: [new Date(), 24 * 3600 * 1000]} }})
起初我认为这可能是一个数据类型问题,但下面的查询返回预期的文档:
db.user.find({creationDate: {$lt: new Date()}})
下面的人工查询确认$subtract
命令返回日期:
> db.user.aggregate([{$project: {dateDifference: {$subtract: [new Date(), 24 * 3600 * 1000]}}}, {$limit: 1}])
[
{
_id: ObjectId("6057bce0ab02f3489f1d22c1"),
dateDifference: 2021-05-17T01:23:15.260Z
}
]
不确定我在第一次查询中做错了什么。您可以在不使用
$subtract
聚合的情况下获得所需的结果
db.user.find({
creationDate: {
$lt: new Date(Date.now() - 24 * 3600 * 1000)
}
})
无需使用
$subtract
聚合即可获得所需的结果
db.user.find({
creationDate: {
$lt: new Date(Date.now() - 24 * 3600 * 1000)
}
})
因为减法是一个聚合操作,所以我认为它不使用聚合就不能工作。因为减法是一个聚合操作,所以我认为它不使用聚合就不能工作。我必须用
new Date()替换Date.now()。除此之外,它成功了,谢谢!我不得不用新日期()
替换Date.now()
。除此之外,它成功了,谢谢!