如何查询 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:01
与1:59
相同,但1:59
与2: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 小时的条目?的主要内容,如果未能解决你的问题,请参考以下文章
如何在bigquery中获得浮动或十进制的两个日期时间之间的小时差