如何获取唯一数据并映射到 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供大家参考。
我是 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供大家参考。