Mongo获取一个三重属性的Distinct值对和值列表



我有以下问题:

我想使用Python驱动程序从MongoDB获得以下信息:

  • 两个属性的两个唯一组合的列表,以及具有第三个值的属性的第三个数值的子列表

输入:

[
{ surname: "Will", lastname: "Smith", position:"Actor" },
{ surname: "Michael", lastname: "Jackson", position:"Musican" },
{ surname: "Will", lastname: "Smith", position:"Musican" },
{ surname: "Alicia", lastname: "Keys", position:"Musican" },
{ surname: "Brad", lastname: "Pitt", position:"Actor" }
];

我的实际查询:

result = client['coll']['db'].aggregate([
{
'$group': {
'_id': {
'surname': '$surname', 
'lastname': '$lastname'
}
}
}
])

我的查询输出

[
{ surname: "Will", lastname: "Smith"},
{ surname: "Michael", lastname: "Jackson"},
{ surname: "Alicia", lastname: "Keys"},
{ surname: "Brad", lastname: "Pitt"}
]

所需输出:

[
{ surname: "Will", lastname: "Smith", position: {["actor","musican"]}},
{ surname: "Michael", lastname: "Jackson", position:{["musican"]}},
{ surname: "Alicia", lastname: "Keys", position:{["musican"]}},
{ surname: "Brad", lastname: "Pitt", position:{["actor"]}}
]

您想要的输出不是有效的JSON,所以我认为您的意思如下。

你只需要在分组时使用$addToSet就可以获得所有唯一的位置,比如:

db.collection.aggregate([
{
"$group": {
"_id": {
"surname": "$surname",
"lastname": "$lastname"
},
positions: {
$addToSet: "$position"
}
}
}
])

Mongo游乐场

最新更新