我一直在try 从一个集合中每1小时提取一条记录,在datetime(日期)上每10秒提取一条记录.文件如下所示:

datetime: 2021-11-26T15:08:20.000+00:00
owner_id: "INTERNAL"
motor_id: 24

datetime单据字段为日期()类型.

在这个集合上我有1 record each 10 seconds on datetime field个(几天),但我想每个1 hour datetime interval只提取一条记录.我怎么能把这个存档呢?

事先感谢您提供的任何提示、帮助或指向正确文档的指导.

我试图追随这一点:https://mongoing.com/docs/reference/operator/aggregation/filter.html次,但没有成功.不确定如何增加小时数.

编辑:有关该Collection 的更多信息:

包含26.303条记录的集合1如下所示:

{
  "_id": {
    "$oid": "644b34a3756b9c1dc169e20d"
  },
  "datetime": {
    "$date": {
      "$numberLong": "1637939300000"
    }
  },
  "customer_id": "INTERNAL",
  "owner_id": "INTERNAL",
  "GMHP": -0.54,
  "AMHP": 198.19,
  "OMHP": 428.883544921875,
  "AROP": 148.57066345214844,
  "OROP": 102.5451889038086
}

每个文档都有10秒的时间间隔存储在日期时间字段中.我计划在future 将这些文档更改为时间序列. 我的目标是 Select 每个小时的文档,例如:

第一文档日期时间:2021-11-26T15:08:20.000+00:00 第二文档日期时间:2021-11-26T15:09:20.000+00:00 以此类推.

我可以安全地忽略T15:08:30到T15:09:10之间的所有字段.

推荐答案

一种 Select 是简单地使用$dateToParts.如果每10秒有一个文档,$match步骤将返回每小时的第一个文档:

db.collection.aggregate([
  {$set: {
      datetimeParts: {
        $dateToParts: {
          date: "$datetime"
        }
      }
  }},
  {$match: {
      "datetimeParts.minute": 0,
      "datetimeParts.second": {$lt: 10}
  }},
  {$unset: "datetimeParts"}
])

看看它在playground example号公路上是如何工作的

Mongodb相关问答推荐

如何从文档列表的数组内部打印一个对象?

MongoDB合并按键更新值的对象数组

MongoDB 使用 pymongo 收集 500K 文档的写入速度很差

$lookup 的参数必须是字符串

Mongoose 和 MongoDB,如何在具有多个引用的两个模型之间创建关系?

如何在 mongodb 中设置整数的默认值?

使用 EventSourcing(NodeJS、MongoDB、JSON)跨多个偶尔连接的客户端同步数据

.save() 不是函数 Mongoose

如何构建我只需要打开一次 mongodb 连接的快速应用程序?

MongoDB 文档操作是原子的和隔离的,但它们是否一致?

如何使用 C# MongoDB 驱动程序检索字段子集?

用 Redis 查询?

用 BsonRepresentation(BsonType.ObjectId) vs BsonId vs ObjectId 在 C# 中装饰属性之间的区别

MongoDB展开多个数组

在 mongodb 的一次更新调用中推送到两个单独的数组

MongoDB 批处理操作的最大大小是多少?

Django admin 和 MongoDB,可能吗?

从每个组中 Select 前 N 行

Mongo: query by key one level deep

python + pymongo:如何从 for 循环中在 mongo 中的现有文档上插入新字段