AllianceMember.aggregate([{
$match : { ally_id : alliance._id } ,
$lookup:
{
from: 'users',
localField: 'user_id',
foreignField: '_id',
as: 'users'
}
}]).then((members) => {});
Итак, в основном я пытаюсь получить members that are in alliance, а затем объединяю их с таблицей users. Эта часть кода работает. Но теперь мне нужно отфильтровать members that are in alliance из коллекции alliances.
AllianceMember_iduser_idally_id
Alliance_idtitleleader
Мне нужно показать пользователям на странице альянса, у которых ally_id равен alliance_id. Без функции $match я заставляю всех участников появляться в каждом альянсе.
Ошибка, которую я получаю с $match: Arguments must be aggregate pipeline operators





Вы испортили сцену $lookup и $match.
А также вы не транслировали свой ally_id из String в mongoose ObjectId
Должно получиться что-то вроде
db.aggregate([
{ "$match": { "ally_id": mongoose.Types.ObjectId(alliance._id) } },
{ "$lookup": {
"from": "users",
"localField": "user_id",
"foreignField": "_id",
"as": "users"
}}
])
Я вижу, что в вашем коде что-то не так. А в $match нужно закинуть свой id. Ничего больше.
$ lookup отлично работает без $ match, кстати. Так что я не думаю, что это напортачило.