我从一个外部 API 获取数据,它给了我两个集合。一种用于足球比赛,一种用于足球比赛。我将这些数据保存在 MongoDB 中。当我查询一场足球比赛时,我想知道参加比赛的每支球队。
这些是模型。
游戏
{
...,
homeTeam: {
id: 1234
},
awayTeam: {
id: 2345
},
...
}
Run Code Online (Sandbox Code Playgroud)
竞赛
{
...
standings: [
{
position: 1,
team: {
id: 1234,
...
},
...
},
{
position: 2,
team: {
id: 2345,
...
},
...
}
]
}
Run Code Online (Sandbox Code Playgroud)
我试过将聚合与 $lookup 结合使用,但我无法让它以我想要的方式工作。
const game = await Game.aggregate([
{$match: {'competition.id': parseInt(req.params.id)} },
{$lookup: {
from: 'competitions',
localField: 'homeTeam.id',
foreignField: 'standings.team.id',
as: 'homeTeam.position',
}}
]);
Run Code Online (Sandbox Code Playgroud)
我希望每场比赛都有这样的结果。
{
...,
homeTeam: {
id: …Run Code Online (Sandbox Code Playgroud)