更有效的组合mongo文档的方法

问题描述 投票:0回答:1

我在mongo中的文档以这种方式存储:

{
        "_id" : ObjectId("5ea779501b4757cbca33e8e0"),
        "direction" : 180,
        "latitude" : -3.724404,
        "longitude" : -38.557694,
        "metrictimestamp" : ISODate("2018-02-01T02:59:34Z"),
        "odometer" : 161245809,
        "routecode" : 0,
        "speed" : 0,
        "deviceid" : 148469,
        "vehicleid" : 33089
}

我需要根据“ metrictimestamp”字段上的日期对该文档进行分组,并计算当天的车辆数量,我正在使用以下查询(请注意pymongo上的注意事项:]]

pipe = [

     {
      "$addFields": {
        "date": {

            "$substrBytes": [
              "$metrictimestamp",
              0,
              10
            ]

        }
      }
    },
    {
      "$group": {
        "_id": {
          "vehicleid": "$vehicleid",
          "date": "$date"
        },
        "count": {
          "$sum": 1
        }
      }
    }
              ]

这对我来说很好,但是我不禁想到,有一种更有效的方法可以做到这一点,对任何建议都可以理解。

我在mongo中的文档以这种方式存储:{“ _id”:ObjectId(“ 5ea779501b4757cbca33e8e0”),“方向”:180,“纬度”:-3.724404,“经度”:-38.557694,...

mongodb pymongo
1个回答
0
投票

您可以在$group阶段中进行日期格式化(或转换),因此避免了初始的$addFields阶段。具有额外的阶段不利于处理,尤其是对于大型数据集。

© www.soinside.com 2019 - 2024. All rights reserved.