我有以下问题:
我想使用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游乐场