猫鼬查询合并对象数组

时间:2021-04-11 05:32:44

标签: mongodb mongoose mongodb-query

我有一个这样的集合:

收藏基础:

{
    _id:"a"
    field:[
        {
          _id:"aa",
          field1:"aa1"
        },
        {
          _id:"ab",
          field2:"ab2"
        },
    ]
}

我可以使用什么查询来得到这样的结果:

{
    _id:"a"
    field:            
        {
          _id:"ab",
          field2:"ab2",
          field1:"aa1"
        },        
}

换句话说,我想将此函数用作 field 数组上的猫鼬查询:

field.reduce((p,c)=>({...p,...c}),{})

1 个答案:

答案 0 :(得分:1)

  • $reduce 迭代 field 的循环,将 initialValue 设置为空对象,
  • $mergeObjects 合并 initialValue 表示 $$value$$this 表示当前对象
db.collection.aggregate([
  {
    $addFields: {
      field: {
        $reduce: {
          input: "$field",
          initialValue: {},
          in: { $mergeObjects: ["$$value", "$$this"] }
        }
      }
    }
  }
])

Playground