@HitGirl

Как сделать lookup по результату lookup?

Здравствуйте!
Подскажите, пожалуйста, как получить login пользователя для каждого сообщения? (выделенная строка)
return RoomModel.aggregate().match({ "users": new mongoose.Types.ObjectId(userId)})
        .lookup({ from: 'users', localField: 'owner', foreignField: '_id', as: 'owner' }).unwind({path:"$owner"})
        .lookup({ from: 'users', localField: 'users', foreignField: '_id', as: 'users' })
        .lookup({from: 'roommessages', localField: '_id',foreignField: 'room', as: 'messages'  })
       .lookup({ from: 'users', localField: 'messages.author', foreignField: '_id', as: '$messages.author' })
        .addFields({messages: {$filter: {input: '$messages', as: 'item', cond: {$in: [new mongoose.Types.ObjectId(userId), '$$item.recipients' ]}}}})
        .project({ _id:0,name:1,"password": { $ne: [ "$password", "empty" ] }, "owner.login":1, "users.login":1,
            "messages.message":1, "messages.author": 1,
        });


Строка
.lookup({ from: 'users', localField: 'messages.author', foreignField: '_id', as: '$messages.author' })

не работает так, как нужно.
  • Вопрос задан
  • 10 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы