Количество строк для каждого отдельного значения поля в Mongoose - PullRequest
2 голосов
/ 13 апреля 2020

У меня есть схема типа { reactionType: String, userName: String } (очень упрощенная), и я хочу подсчитать, сколько реакций каждого типа получил данный пользователь. Как мне сделать это с Mongodb и Mon goose?

Я пытался сделать

MyModel.find({ userName: 'myUser' }).distinct('reactionType').count()

и варианты этого, но это, кажется, подсчитывает типы реакции, представленные для данного пользователя , а не счет каждого типа реакции для пользователя.

В случае, если это поможет уточнить, что я хочу, в SQL я бы сделал что-то вроде

SELECT ReactionType, COUNT(1) FROM TheTable
WHERE UserName = 'myUser'
GROUP BY ReactionType

но как перевести это на пн goose -спик?

Я нашел этот вопрос, который кажется связанным, но он решает другую проблему, и это не помогло, учитывая выше.

1 Ответ

2 голосов
/ 13 апреля 2020

Вам нужен оператор $ group Aggregation Framework:

MyModel.aggregate([
    {
        $match: { userName: 'myUser' }
    },
    {
        $group: {
            _id: "$reactionType",
            count: { $sum: 1 }
        }
    }
])
...