计算 MongoDB 中某个 id 的不同值
Count for distinct values for a certain id in MongoDB
我正在学习 MongoDB 聚合以进行数据分析。样本数据集如下:
{ "_id" : ObjectId("5c8fa906cd5591004c2db5f9"), "id" : 49893861, "cate_id" : "81614" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db602"), "id" : 49893861, "cate_id" : "1102" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db606"), "id" : 49893861, "cate_id" : "1102" }
期望的结果应该是:
{
"id": 49893861,
"categories": [
{
"cate_id": "1102",
"count": 2
},
{
"cate_id": "81614",
"count": 1
},
]
}
我想知道如何使用正确的 MongoDB 聚合框架命令实现此目的。谢谢!
你必须在这里使用两个 $group
阶段。首先是 id
和 cate_id
和 count
文件数量 和 然后是 id
db.collection.aggregate([
{ "$group": {
"_id": {
"id": { "$toLong": "$id" },
"cate_id": "$cate_id"
},
"count": { "$sum": 1 }
}},
{ "$group": {
"_id": "$_id.id",
"categories": {
"$push": {
"cate_id": "$_id.cate_id",
"count": "$count"
}
}
}}
])
我正在学习 MongoDB 聚合以进行数据分析。样本数据集如下:
{ "_id" : ObjectId("5c8fa906cd5591004c2db5f9"), "id" : 49893861, "cate_id" : "81614" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db602"), "id" : 49893861, "cate_id" : "1102" }
{ "_id" : ObjectId("5c8fa906cd5591004c2db606"), "id" : 49893861, "cate_id" : "1102" }
期望的结果应该是:
{
"id": 49893861,
"categories": [
{
"cate_id": "1102",
"count": 2
},
{
"cate_id": "81614",
"count": 1
},
]
}
我想知道如何使用正确的 MongoDB 聚合框架命令实现此目的。谢谢!
你必须在这里使用两个 $group
阶段。首先是 id
和 cate_id
和 count
文件数量 和 然后是 id
db.collection.aggregate([
{ "$group": {
"_id": {
"id": { "$toLong": "$id" },
"cate_id": "$cate_id"
},
"count": { "$sum": 1 }
}},
{ "$group": {
"_id": "$_id.id",
"categories": {
"$push": {
"cate_id": "$_id.cate_id",
"count": "$count"
}
}
}}
])