如何获取唯一数据并映射到 MongoDB 中的字段

How to get Unique Data and Mapped with Field in MongoDB

我是 Mongo 的新手,正在尝试对模型数据进行分组并将模型代码映射到模型年份。

Sample Data:

[
   {
      "model":[
         {
            "modelCode":"Z34L",
            "modelName":"370Z",
            "modelYear":"2009 - Present"
         }
      ]
   },
   {
      "model":[
         {
            "modelCode":"Z35L",
            "modelName":"370Z",
            "modelYear":"2010 - Present"
         }
      ]
   }
]

预期输出:

[
   {
      "modelName":"370Z",
      "modelYear":{
         "Z34L":"2009 - Present",
         "Z35L":"2010 - Present"
      }
   }
]

在上面的例子中,我们按车型名称分组,找到2个车型年份,将车型年份key放入其中,key为车型代码,value为车型年份。 当我使用这种方法但得到重复数据时。 https://mongoplayground.net/p/Je0bR6ki7kP

你其实很接近。唯一不正确的是您正在使用整个 model 对象执行 $addToSet,这使得 de-duplication 失败。您可以尝试以下代码:

db.collection.aggregate([
  {
    "$unwind": "$model"
  },
  {
    "$group": {
      "_id": {
        "modelName": "$model.modelName"
      },
      "modelYearListing": {
        "$addToSet": {
          k: "$model.modelCode",
          v: "$model.modelYearListing"
        }
      }
    }
  },
  {
    "$project": {
      _id: 0,
      "modelName": "$_id.modelName",
      modelYear: {
        "$arrayToObject": "$modelYearListing"
      }
    }
  }
])

这里是Mongo playground供大家参考。