【发布时间】:2020-10-16 20:43:32
【问题描述】:
我的目标是让第一个数组元素的第四个字段“与众不同”
我的样本数据:
{
'name': 'tizio'
,'address':[{ 'roadType' : "via",
, 'roadname' : "Roma"
, 'number' : "12 bis"
, 'city' : 'Milano'
},
{ 'roadType' : "via",
, 'roadname' : "Emilia"
, 'number' : "124"
, 'city' : "Modena"
},
{ 'roadType' : "via",
, 'roadname' : "Appia"
, 'number' : "89"
, 'city' : "Genova"
}
]
}
,{
'name': 'caio'
,'address':[{ 'roadType' : "vicolo",
, 'roadname' : "stretto"
, 'number' : "12"
, 'town' : 'Monza'
},
{ 'roadType' : "largo",
, 'roadname' : "Garibaldi"
, 'number' : "24"
, 'city' : "Modena"
},
{ 'roadType' : "piazza",
, 'roadname' : "Armi"
, 'number' : "26"
, 'city' : "Rovigo"
}
]
},
{
'name': 'sempronio'
,'address':[{ 'roadType' : "via",
, 'roadname' : "Roma"
, 'number' : "15"
, 'city' : 'Milano'
},
{ 'roadType' : "via",
, 'roadname' : "Po"
, 'number' : "4"
, 'city' : "Torino"
},
{ 'roadType' : "largo",
, 'roadname' : "Garibaldi"
, 'number' : "9"
, 'community' : "Genova"
}
]
}
在我的情况下,结果应该是:
{'city': 'Milano'}
{'town': 'Monza'}
这是一个类似sql的想法
select distinct(address[0][4]).key as community_type,
distinct(address[0][4]).value as community_name
from collection
在做
db.collection.distinct('address.0')
但它会返回所有字段
{ 'roadType' : "via",
, 'roadname' : "Roma"
, 'number' : "15"
, 'city' : 'Milano'
},
{ 'roadType' : "vicolo",
, 'roadname' : "stretto"
, 'number' : "12"
, 'town' : 'Monza'
},{ 'roadType' : "via",
, 'roadname' : "Roma"
, 'number' : "12 bis"
, 'city' : 'Milano'
}
和
db.collection.distinct('address.0.4')
返回一个空数组
注意:mongoplayground 说查询不正确,但 robomongo 接受它
【问题讨论】: