Объединение двух коллекций с агрегацией - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть три коллекции:

  • Like с полем postItem: { type: Schema.Types.ObjectId, ref: 'Post' } и полем type: String,
  • Post с полем author: { type: Schema.Types.ObjectId, ref: 'User' },
  • и User.

Я хочу подсчитать, сколько лайков получил каждый type пользователь с данным ID. Как мне это сделать в MongoDB / Mon goose?

Я научился подсчитывать, сколько лайков каждого типа у каждого Post ( здесь - мой вопрос), но я не уверен, что смогу обобщить это на агрегации по нескольким коллекциям (объединяя Like и Post, поскольку мне нужно фильтровать лайки по Post s author) даже после прочтения документации на структура агрегации. В частности, я попытался сделать

Like.aggregate([
            { $lookup: { from: 'Like', localField: 'postItem', foreignField: '_id', as: 'matchingPost' } },
            { $match: { 'matchingPost.author': mongoose.Types.ObjectId(req.user.userId) } },
            { $group: { _id: '$type', count: { $sum: 1 } } }
        ]);

, но это возвращает пустой набор.

Так как мне это сделать в MongoDB и Mon goose?

...