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

如何通过Mongoose聚合从嵌套对象提取字段值并解决报错

解决Mongoose聚合查询中提取嵌套字段的报错问题

我来帮你快速搞定这个问题!你遇到的报错根源在于**$project阶段里translation字段的路径写法错误**,MongoDB无法识别$.ru这种不完整的引用路径。

问题分析

你的原始数据里,translation是一个嵌套对象({ ru: 'asdf' }),要把其中的ru字段值提取出来作为顶层的translation字段,必须使用完整的嵌套字段路径,也就是$translation.ru,而不是你写的$.ru。

修正后的聚合查询语句

把$project里的translation字段路径修正后,就能得到你期望的结果了:

await LessonPhrase.aggregate([
  { $match: { lessonId } },
  { 
    $project: { 
      _id: '$_id', 
      origin: 1, 
      translation: '$translation.ru' 
    } 
  }
]);

额外优化(可选)

如果你的数据中可能存在translation.ru字段缺失的情况,可以用$ifNull来处理空值,避免返回null:

await LessonPhrase.aggregate([
  { $match: { lessonId } },
  { 
    $project: { 
      _id: '$_id', 
      origin: 1, 
      translation: { $ifNull: ['$translation.ru', ''] } // 缺失时返回空字符串
    } 
  }
]);

执行修正后的查询后,就能得到你想要的结果:

[ { origin: 'asdf', translation: 'asdf', _id: '215efb05-eb01-4376-8da2-8d8960a0e46d' } ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:11:02