如何合并2个数组字段并在Mongo聚合中合并为文档中的1个对象(kev值)

时间:2018-03-29 03:35:07

标签: mongodb dictionary aggregation-framework

我在1个文档中有2个不同的数组,我需要将两个数组合并为1个对象作为键和值。 两个数组都有确切的数值。

原始文件

{ 
"case_number" : "123", 
"questions" : [ "Primary Organ Site","Date of Diagnosis" ],
"answers"   : [ "Uterus", "12/12/2017"]
}

我希望他们能够合并到这个

{ 
"case_number" : "123", 
"result" : { 
    "Primary Organ Site": "Uterus",
    "Date of Diagnosis": "12/12/2017" 
    }
}

我已经尝试过这个

db.cases.aggregate(
  "case_number" : true,
  "results": {
     "$arrayToObject" : {       
        $map: {
          input: "$answers",
          as: "answer",
          in: [ "$questions" , "$$answer" ]  
        }
      }
    }
)

还有更多其他人。 请帮忙!

2 个答案:

答案 0 :(得分:1)

解决问题

db.cases.aggregate(
  "case_number" : true,   
  "results": {  
     $arrayToObject: {
        $map: {
          input: "$answers",
          as: "answer",
          in: [ { $arrayElemAt: [ "$questions", { "$indexOfArray" : [ "$answers", "$$answer" ] } ] },  "$$answer" ]

        }
      }
    },

答案 1 :(得分:0)

试试这个(Mongo 3.6)

db.cases.aggregate([{ "$project": { "result": { "$concatArrays": [ "$questions", "$answers" ] }, "case_number":1 }}])