如何查询 mongodb 中的日期,以便删除时差小于 1 小时的条目?

Posted

技术标签:

【中文标题】如何查询 mongodb 中的日期,以便删除时差小于 1 小时的条目?【英文标题】:How do I query the dates in mongodb such that the entries with less than 1 hour difference is removed? 【发布时间】:2022-01-21 10:22:44 【问题描述】:

MongoDB collection

我有这个收藏。我想查询条目,以便删除键“2”或“3”之一,因为 createdAt 条目的差异小于 1 小时。查询是什么?

【问题讨论】:

如果您可以在文本 json 中提供数据以便人们可以测试他们的查询,如果您在文本 json 中也提供预期结果也会有很大帮助,因此人们确切地知道您需要什么。跨度> 【参考方案1】:

查询

$dateTrunc 与单位小时一起使用,这意味着保持日期不变,但在日期之后的左边全部为零 按该截断日期分组 => 具有相同小时的日期在同一组中 只保留其中一个

*查询没有区别,它在同一小时工作,例如1:011:59相同,但1:592:01不同组

*我认为差异很复杂,因为 2 个日期可能相差 1 小时,并且在不同的日子、月份甚至年份, 我们还必须决定保留哪些日期,以防日期链。

Test code here

aggregate(
["$group":
  "_id":"$dateTrunc":"date":"$createdAt", "unit":"hour",
   "doc":"$first":"$$ROOT",
 "$replaceRoot":"newRoot":"$doc"])

【讨论】:

【参考方案2】:

您可以使用$gt 查询。见文档here

这是一个代码示例。只需使用您的属性更改位置,在您的场景中为 createdAt

let user = await User.deleteMany(
    createdAt:  $gt: Date.now() - 3600000  // 3600000 means 1 hour in millisecond
);

// Rest of your code

【讨论】:

以上是关于如何查询 mongodb 中的日期,以便删除时差小于 1 小时的条目?的主要内容,如果未能解决你的问题,请参考以下文章

如何按创建日期删除 MongoDB 中的数据? [复制]

如何按创建日期删除 MongoDB 中的数据? [复制]

如何获得两个日期之间的小时差?

如何在bigquery中获得浮动或十进制的两个日期时间之间的小时差

如何在 Oracle 中以 12 小时格式存储日期的 2 个日期之间的小时时差?

在 Moment Js 中获取两个日期之间的小时差