如何在MongoDB聚合阶段添加计数器?

时间:2020-04-14 09:57:37

标签: mongodb mongoose aggregate

我有问题:

我有一组代表“任务完成”的文档。

每个此类完成都分配了一个用户,以及完成所花费的时间。

我需要按用户对我的文档进行分组,然后按累计时间对其进行排序,这很正常:

const chartsAggregation = [
    {
        $group: {
            _id: '$user',
            totalTime: { $sum: '$totalTime' },
        },
    },
    {
        $sort: {
            totalTime: -1,
        },
    },
    {
        $addFields: {
            placement: { $inc: 1 }, // This does not work
        },
    },
];

但是,我需要在排序后“烙印”展示位置,可以说是“排名”。

原因是,我想与花费最多时间的人一起显示“图表页面”。此页面需要可搜索和分页,以便人们找到自己及其位置。

由于稍后需要进行搜索查询和限制(用于分页),因此用户在结果数组中的实际位置对我没有用。

我想添加一个字段(我在$ addFields-部分中尝试过此操作),该字段将列表中的展示位置与数据集相关联,因此,即使我稍后过滤并限制结果,原始的展示位置也保持不变。

我所需要做的就是在$ addFields-语句中添加一个递增计数器,但是我找不到解决方法。文档中似乎没有类似的东西。

你能帮我吗?

0 个答案:

没有答案