MongoDB聚合在根中创建内部数组

Posted

技术标签:

【中文标题】MongoDB聚合在根中创建内部数组【英文标题】:MongoDB aggregation make inner array in root 【发布时间】: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,
           
         ]

【问题讨论】:

【参考方案1】:

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


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

Playground

【讨论】:

以上是关于MongoDB聚合在根中创建内部数组的主要内容,如果未能解决你的问题,请参考以下文章