У меня сложная структура, к которой я пытаюсь «присоединиться».
Лучший способ описать это - у меня есть «Избранные команды», которые хранятся у пользователя в виде массива имен / идентификаторов - однакоони хранятся во вложенном объекте.Я хочу вернуть пользователям любимые команды игроков с командой.
Вот модели данных
PLAYERS
{
_id:
team_id:
name:
position:
}
TEAMS
{
_id:
name:
}
USER
{
_id:
name:
favs: {
mascots: [{
_id:
name:
}],
teams: [{
_id:
name:
}],
}
}
У меня есть массив идентификаторов команд от user.favs.teams - и чтоЯ хочу вернуть игроков с названием их команды.
Это текущая агрегация, которую я использую - она возвращает игроков, а не команды ... Я почти уверен, что мне нужно раскрутить или что-то подобное.
players.aggregate([
{
$match: {
team_id: {
$in: [--array of team ID's--]
}
}
},
{
$lookup: {
from: 'teams',
localField: 'team_id',
foreignField: '_id',
as: 'players_team'
}
},
{
$project: {
_id: 1,
name: 1,
position: 1,
'players_team[0].name': 1
}
}
])
Что я получаю обратно ...
_id: 5c1b37b6fd15241940b11111
name:"Bob"
position:"Test"
team_id:5c1b37b6fd15241940b441dd
player_team:[
_id:5c1b37b6fd15241940b441dd
name:"Team A"
...other fields...
]
Что я хочу вернуть ...
_id: 5c1b37b6fd15241940b11111
name:"Bob"
position:"Test"
team_id:5c1b37b6fd15241940b441dd
player_team: "Team A"