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