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()
。除此之外,它成功了,谢谢!