【问题标题】:NodeJS MongoDB Find posts that are older than current dateNodeJS MongoDB 查找早于当前日期的帖子
【发布时间】:2019-02-26 16:37:27
【问题描述】:

所以我这里有这个代码行:

let advertisements = await Advertisement.find({created_at: {$lt: moment().valueOf()}});

这就是它的作用:

created_at:返回创建帖子时的时间戳:1551198203488.0

moment.valueOf()返回当前时间戳,例如:1551198203488.0

现在我需要编写这个代码行,它只找到 1 小时前的 ads。有没有可能?

我还存储和 group2_date 存储当前时间戳,但添加了 1 小时,如下所示:moment().add(1, 'h')

【问题讨论】:

  • 只需将$gt: ... 添加到您的created_at。 (另外,您实际上并不需要 $lt: 部分;任何现有文档都应该早于 0 ;))

标签: javascript node.js mongodb datetime mongoose


【解决方案1】:

您可以使用.subtract 函数从moment 中减去一小时,然后使用$gte 运算符仅从减去的小时数中获取较大的值/文档,而不是从当前时间中获取。

let advertisements = await Advertisement.find({
  "created_at": {
    "$lte": moment().toDate(),
    "$gte": moment().subtract(1, 'hours').toDate()
  }
})

【讨论】:

  • 感谢您的回复!现在我能否以某种方式使 1 小时前的广告在发布后 1 小时后显示?
  • 是的,上面的查询就是这样做的。不是吗?
  • 哎呀,它似乎工作。我的错。我只有用户组可以在什么时候看到帖子,所以我只是添加了用户组来获取未来 1 小时的广告。
  • 我只需要在这里增加用户组的复杂性。
猜你喜欢
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2015-01-04
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多