MongoDB聚合框架 - 如何包含原始文档中的字段?

时间:2014-01-09 05:03:49

标签: mongodb grouping mongodb-query aggregation-framework

我是Mongo的新手,我正试图利用聚合框架来完成聚合。

假设我在集合中有以下文件:

{name: "Sara", brandId: 1, count: 2 day:1/6/2014}//day value is ISODate
{name: "Sally", brandId: 1, count: 5 day:1/7/2014} 
{name: "Mike", brandId: 1, count: 2, day: 1/8/2014} 
{name: "Bob", brandId: 1, count: 4 day: 1/8/2014}
{name: "Joe", brandId: 1, count: 5 day:1/8/2014}

我想要做的是创建一个如下所示的报告(项目到文档):

给定日期范围:2014年1月7日 - 2014年1月8日

{
    totalCount: 18,
    countForTimePeriod: 11,
    dailyAnalytics: [{
        count : 5,
        day: 7,
        month: 1,
        year: 2014
    },
    {
        count : 2,
        day: 8,
        month: 1,
        year: 2014
    },
    {
        count : 4,
        day: 8,
        month: 1,
        year: 2014
    },
    {
        count : 5,
        day: 8,
        month: 1,
        year: 2014
    }]
}

totalCount =所有文档的计数汇总,按brandId分组 countForTimePeriod =日期范围内的计数聚合 dailyAnalytics =包含日期范围内天数的嵌入式文档数组。 (我可以搞清楚日期组件。我希望;))

我似乎找不到比分组和投影更基本的例子。到目前为止,我正在将这个系列分组到“白天”。和' brandId'。我不知道如何执行包含我日期范围之外的计算值的聚合,即totalCount& countForTimePeriod

我甚至都在苦苦挣扎。有人可以给我指点吗?

db.brandCollection.aggregate({$group:{
        _id: {brandId: "$brandId", dayOfYear: "$day"},
        Count: {$sum: "$count"}
        }}
    );

0 个答案:

没有答案