当前位置:  开发笔记 > 编程语言 > 正文

将$ lookup结果转换为对象而不是数组

如何解决《将$lookup结果转换为对象而不是数组》经验,为你挑选了1个好方法。

我正在从_id进行$ lookup.所以结果总是1个文件.因此,我希望结果是一个对象,而不是一个包含一个项目的数组.

let query = mongoose.model('Discipline').aggregate([
    {
      $match: {
        project: mongoose.Types.ObjectId(req.params.projectId)
      },
    },
    {
      $lookup: {
        from: "typecategories",
        localField: "typeCategory",
        foreignField: "_id",
        as: "typeCategory"
      }
    },
    {
      $project: {
        title: 1, typeCategory: "$typeCategory[0]"
      }
    }
  ]);

这种表示法:"$typeCategory[0]"不起作用.这有什么聪明的方法吗?



1> sidgate..:

你可以使用$unwind.它从输入文档中解构数组字段,以输出每个元素的文档

let query = mongoose.model('Discipline').aggregate([
    {
      $match: {
        project: mongoose.Types.ObjectId(req.params.projectId)
      },
    },
    {
      $lookup: {
        from: "typecategories",
        localField: "typeCategory",
        foreignField: "_id",
        as: "typeCategory"
      }
    },
    {$unwind: '$typeCategory'},
    {
      $project: {
        title: 1, typeCategory: "$typeCategory"
      }
    }
  ]);

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有