MongoDB 忽略在聚合中使用唯一键的重复文档
MongoDB Ignoring duplicate documents using unique key in aggregate
文档看起来像这样。
{
"sId": "s1",
"language": "hindi",
"service": "editing",
"count": 5,
},
{
"sId": "s2",
"language": "hindi",
"service": "editing",
"count": 6,
},
{
"sId": "s2",
"language": "hindi",
"service": "reading",
"count": 6,
},
{
"sId": "s3",
"language": "english",
"service": "reading",
"count": 10,
}
我想要的结果应该是这样的
{
"language":"hindi",
"count": 11
},
{
"language":"english",
"count": 10
}
我试过这样的聚合查询
{
"$group": {
"_id": {
"lang": "$language",
"sId": "$sId"
},
"count": {"$sum": "$count"}
}
}
在 sId: s2
中它应该忽略第二个对象。
任何人都可以告诉我如何实现上述目标。
您可以使用$first
获取每个组的第一个元素。然后您可以再次使用 $group
以 language
.
求和
{
"$group": {
"_id": {
"language": "$language",
"sId": "$sId"
},
"count": {
"$first": {
"$sum": "$count"
}
}
}
}
文档看起来像这样。
{
"sId": "s1",
"language": "hindi",
"service": "editing",
"count": 5,
},
{
"sId": "s2",
"language": "hindi",
"service": "editing",
"count": 6,
},
{
"sId": "s2",
"language": "hindi",
"service": "reading",
"count": 6,
},
{
"sId": "s3",
"language": "english",
"service": "reading",
"count": 10,
}
我想要的结果应该是这样的
{
"language":"hindi",
"count": 11
},
{
"language":"english",
"count": 10
}
我试过这样的聚合查询
{
"$group": {
"_id": {
"lang": "$language",
"sId": "$sId"
},
"count": {"$sum": "$count"}
}
}
在 sId: s2
中它应该忽略第二个对象。
任何人都可以告诉我如何实现上述目标。
您可以使用$first
获取每个组的第一个元素。然后您可以再次使用 $group
以 language
.
{
"$group": {
"_id": {
"language": "$language",
"sId": "$sId"
},
"count": {
"$first": {
"$sum": "$count"
}
}
}
}