首页 > 解决方案 > 通过来自 mongoose 的 agreggate 从嵌套对象中获取值

问题描述

我有一个类似的列表:

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

向猫鼬查询:

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

我想得到以下列表:

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

但是每次都会出错,无法处理..

标签: mongodbmongooseaggregation-framework

解决方案


阶段中的美元符号 ( $)$project表示对文档根目录的引用,以便ru从您需要的嵌套transaction对象中获取:

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

推荐阅读