【问题标题】:MongoDB aggregation make inner array in rootMongoDB聚合在根中创建内部数组
【发布时间】:2021-08-03 13:06:38
【问题描述】:

您好,我有两个集合部门。这些集合具有以下属性。

我想在文档的根目录中聚合并添加一个内部数组。请在下面检查我需要的结果:

人:

{
  _id:ObjectID("5ff93b43535bera64de4"),
  first_name: some name,
  last_name : some name,
  dept: department1,

}

部门:

{
  dept_name: department1,
  dept_descp : this is description,
  books: [
          {
           book_name: book1,
           subject: subject1,
           },
            {
           book_name: book2,
           subject: subject2,
           },
         ]
}

到目前为止,我已经尝试过,但没有得到所需的结果

person.aggregate([
   {
   $match:
        {
            "_id": ObjectId("5ff93b43535bera64de4")
        }
    },
   {
        $lookup: {
            from: "department",
            localField: "dept",
            foreignField: "dept_name",
            as: "ndept"
        }
   },
   {
     $project:{"books": '$ndept.books'}
   }
   ])

我想得到的结果是

结果:

{
  _id:ObjectID("5ff93b43535bera64de4"),
  first_name: some name,
  last_name : some name,
  dept: department1,
  books: [
          {
           book_name: book1,
           subject: subject1,
           },
            {
           book_name: book2,
           subject: subject2,
           }
         ]
}

【问题讨论】:

    标签: arrays mongodb mongodb-query aggregation-framework mongodb-lookup


    【解决方案1】:

    尝试$arrayElemAt 从数组中选择第一个元素

    {
      $addFields: {
        books: { $arrayElemAt: ["$ndept.books", 0] }
      }
    }
    

    Playground

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-05
      • 2021-05-04
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多