计算组内每个字段的运行总数-MongoDB

计算组内每个字段的运行总数-MongoDB,mongodb,aggregation,cumulative-sum,Mongodb,Aggregation,Cumulative Sum,我是MongoDB的新手,我正在尝试用运行总数更新一个字段。我的结构如下: ... { _id: [field id], oilFieldId: [the id I'm using which represents an oil field id], tef:[a number], agg:[the field I'd like to update (currently = "")], date: [year-month-day] } ....more records 我想要实现的是更新“ag

我是MongoDB的新手,我正在尝试用运行总数更新一个字段。我的结构如下:

...
{
_id: [field id],
oilFieldId: [the id I'm using which represents an oil field id],
tef:[a number],
agg:[the field I'd like to update (currently = "")],
date: [year-month-day]
}
....more records
我想要实现的是更新“agg”字段,它应该包含“tef”字段的运行总数。也就是说,对于第一条记录,“agg”应与“tef”相同,对于第二条记录,“agg”应为当前的“tef”加上先前的“tef”(上月)。所有记录应按“oilFieldId”分组,并应与指定年份相对应

我不知道这是否可以通过聚合实现

PS:期望输出

    {
        _id: [field id],
        oilFieldId: "id number",
        tef:[a number],
        agg:tef,
        date: [2018-01-30]
    }
    {
        _id: [field id],
        oilFieldId: "id number",
        tef:[a number],
        agg:tef + [previous tef],
        date: [2018-02-28]
    }
    {
        _id: [field id],
        oilFieldId: "id number",
        tef:[a number],
        agg:tef+[previous tef]+[previous tef],
        date: [2018-03-30]
    }
    {
        _id: [field id],
        oilFieldId: "id number",
        tef:[a number],
        agg:tef+[previous tef]+[previous tef]+[previous tef],
        date: [2018-04-30]
    }

“…对于第一条记录'agg'与'tef'相同…”:如何确定第一条记录是什么?您是指它们在集合中的存在顺序还是其他一些标准?记录应按oilFieldId分组,并按一年内的日期排序(升序)。在我看来,第一张唱片是一组中的第一张。