MongoDB - 遍历数组数组

MongoDB - Loop through array of arrays

我的 MongoDB collection.

中有一个包含数组数组的文档
{
    "platformId":"CMC_123",
    "carInfo":[
        ["Toyota",20,"White"],
        ["Suzuki",19,"Gray"],
        ["Ford",22,"Red"]
    ]
}

我期待下面的输出

carMilage :{
    "Toyota":20,
    "Suzuki":19,
    "Ford":22
}

下面是我的汇总

[
    {
        $match:{
            platformId : "CMC_123"
        }
    },
    {
        $project:{
            carMilage : '$carInfo'
        }
    }
]

我被 $project 字段困住了。如何使用 $project 字段实现上述输出。谢谢。

  1. $project -

    2.1 $arrayToObject - 将数组转换为对象,结果为 2.1.1.

    2.1.1 $map - 迭代 carInfo 数组。获取当前迭代数组 ($$this) 的第一项作为 k,第二项作为 v

db.collection.aggregate([
  {
    $match: {
      platformId: "CMC_123"
    }
  },
  {
    $project: {
      carMilage: {
        "$arrayToObject": {
          $map: {
            input: "$carInfo",
            in: {
              k: {
                $arrayElemAt: [
                  "$$this",
                  0
                ]
              },
              v: {
                $arrayElemAt: [
                  "$$this",
                  1
                ]
              }
            }
          }
        }
      }
    }
  }
])

Sample Mongo Playgound