{
"_id" : ObjectId("568b650543712795bf864a45"),
"companyId" : "55e2d7cfdc8f74d14f5c900f",
"timeStamp" : ISODate("2014-12-03T18:30:00.000Z")
},
{
"_id" : ObjectId("568b650543712795bf864a49"),
"companyId" : "55e2d7cfdc8f74d14f5c900f",
"timeStamp" : ISODate("2014-12-04T18:30:00.000Z")
}
如何在 mongodb 中按周对文档进行分组。我需要按过去 7 周对文档进行分组,周分组应该基于文档中的“时间戳”字段。
您可以通过使用聚合操作来实现这一点。有$week https://docs.mongodb.org/manual/reference/operator/aggregation/week/#exp._S_weekmongodb中的聚合操作。
首先使用您使用的任何编程语言确定开始日期。
在接下来的管道操作中,统计一周匹配的文档数量。您可以在您需要的任何字段/类型的聚合上执行此操作。
pipeline = [
{
$match: {
timeStamp: {$gt: ISODate(startDate)},
}
},
{
$group: {
_id: {$week: '$timeStamp'},
documentCount: {$sum: 1}
}
}
];
db.mycollection.aggregate(pipeline)
对于您指定的上述两个文档,结果将是
{ "_id" : 48, "documentCount" : 2 }
The _id
上面说的是第48周,并且有两个文件。
通过链接 $week https://docs.mongodb.org/manual/reference/operator/aggregation/week/#exp._S_week了解 mongodb 如何计算周数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)