如何在mongodb按周分组文件

Mid*_*kar 6 mongodb

{
     "_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")
}
Run Code Online (Sandbox Code Playgroud)

如何按周在mongodb分组文件.我需要按最近7周的时间分组文档,并且星期分组应基于文档中的"timeStamp"字段.

Poo*_*rna 9

您可以使用聚合操作来实现此目的.mongodb中有$ 聚合操作.

首先使用您使用的任何编程语言确定startDate.

在以下管道操作中,计算匹配一周的文档数.您可以在所需的任何字段/类型的聚合上执行此操作.

pipeline = [
    {
        $match: {
            timeStamp: {$gt: ISODate(startDate)},
        }
    },
    {
        $group: {
            _id: {$week: '$timeStamp'},
            documentCount: {$sum: 1}
        }
    }
];
db.mycollection.aggregate(pipeline)
Run Code Online (Sandbox Code Playgroud)

对于您指定的上述两个文档,结果将是

{ "_id" : 48, "documentCount" : 2 }
Run Code Online (Sandbox Code Playgroud)

_id上面说,第48周,有两个文件.

通过链接$ 知道mongodb如何计算周数.

  • 如果您的数据集跨越多年的相同周数,请查看 [`$isoWeekYear`](https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/),并将其用于`$group` 步骤 (2认同)