Как добавить счетчик на этапе агрегирования MongoDB? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть проблема:

У меня есть набор документов, которые представляют собой «завершение задачи».

Каждому такому завершению назначен пользователь, и время завершения потребовалось.

Мне нужно сгруппировать свои документы по пользователю, а затем отсортировать их по накопленному времени, и это прекрасно работает:

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

Однако мне нужно «сжечь» размещение после сортировки, так сказать, «ранг».

Причина в том, что я хочу отображать как «страницу с диаграммами» людей, которые больше всего занимали время на вершине. Эта страница должна быть доступна для поиска и разбивки на страницы, чтобы люди находили себя и свое размещение.

Поскольку мне нужно выполнить поисковые запросы и ограничения (для разбивки на страницы) позже, фактические позиции моих пользователей в результирующем массиве бесполезно для меня.

Я хочу добавить поле (я пробовал это в части $ addFields -), которое связывает размещение в списке с набором данных, так что даже если я позже отфильтрую и ограничу результаты Исходное размещение не повреждено.

Все, что мне для этого нужно, - это добавить счетчик приращений в операторе $ addFields -, но я не могу найти способ сделать это. Кажется, в документации ничего подобного нет.

Можете ли вы мне помочь?

...