You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mongoose查询时同一路径下如何populate多个关联字段?

解决方案

你原先的写法两次调用populate指定同一个根路径games,Mongoose会默认用后一次的populate配置覆盖前一次的,所以只有reactions.player的关联生效,players.player的关联被覆盖。
要解决这个问题,只需要将同一games路径下的多个嵌套关联规则合并为数组配置即可,修改后的代码如下:

async function getOne(id) {
    let tournament = await Tournament.findById(id)
        .populate({
            path: 'games',
            // 同一路径下多个嵌套populate规则放在数组中,可同时生效不覆盖
            populate: [
                {
                    path:'players.player',
                    select: ['username', 'avatar']
                },
                {
                    path: 'reactions.player',
                    select: ['username', 'avatar']
                }
            ]
        })
        .exec();
    return tournament;
}

修改后就能同时返回players.player和reactions.player关联的用户名、头像信息,完全匹配你的预期返回结果。

内容的提问来源于stack exchange,提问作者dosbenzos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:00:02