【发布时间】:2019-08-15 18:00:00
【问题描述】:
我有一个集合,其中存储了用户活动数据,这些数据与用户对选定的关键字列表投赞成票还是反对票有关,因为它们与标题目录相关。我需要在 Mongo 中执行一个聚合查询,它为我提供与所有用户的标题相关联的每个关键字的累积分数 - 投票表示赞成票:true,反对票表示反对票:false
使用 unwind 运算符作为我的第一步,然后是 group by,但这就是我迷失的地方,因为我不确定是否按 titleId、keyword 和 vote 的组合进行分组;只是titleId 和关键字或只是titleId。这是集合中数据的示例 -
期望在聚合查询的末尾看到一个按 titleId 分组的文档,其中包含一个对象数组,其中每个对象包含一个关键字以及该关键字在该标题的上下文中的累积投票总数。
{
"_id" : ObjectId("5d2eb0b20e91d1941540e2b5"),
"titleId" : "111222",
"userId" : "993f1e69-c6b0-44eb-a8a6-5db5dc42d425",
"activity" : [
{
"keyword" : "Road Trip",
"vote" : true
},
{
"keyword" : "Friendship",
"vote" : true
},
{
"keyword" : "Family Movie",
"vote" : true
}
]
}
// ----------------------------------------------
{
"_id" : ObjectId("5d38fd270e91d1941559bee0"),
"titleId" : "111222",
"userId" : "f92c7118-8930-4d30-8e07-8363737a6866",
"activity" : [
{
"keyword" : "Road Trip",
"vote" : false
},
{
"keyword" : "Adventure",
"vote" : true
},
{
"keyword" : "Family Movie",
"vote" : true
}
]
}
// ----------------------------------------------
{
"_id" : ObjectId("5d38fd270e91d1941559bee0"),
"titleId" : "111222",
"userId" : "f92c7118-8930-4d30-8e07-8363737a6866",
"activity" : [
{
"keyword" : "Road Trip",
"vote" : false
},
{
"keyword" : "Adventure",
"vote" : false
},
{
"keyword" : "Family Movie",
"vote" : false
}
]
}
// ----------------------------------------------
{
"_id" : ObjectId("5d2eb0b20e91d1941540e2b5"),
"titleId" : "444222",
"userId" : "993f1e69-c6b0-44eb-a8a6-5db5dc42d425",
"activity" : [
{
"keyword" : "Educational film and videos",
"vote" : true
},
{
"keyword" : "Space",
"vote" : true
}
]
}
// ----------------------------------------------
{
"_id" : ObjectId("5d38fd270e91d1941559bee0"),
"titleId" : "444222",
"userId" : "f92c7118-8930-4d80-8e07-8363737a6866",
"activity" : [
{
"keyword" : "Action",
"vote" : false
},
{
"keyword" : "Adventure",
"vote" : false
},
{
"keyword" : "Sci Fi",
"vote" : true
}
]
}
希望看到一个按 titleId 分组的文档和一组对象,其中每个对象包含一个关键字以及该关键字在该标题的上下文中的累积投票总数。
【问题讨论】:
标签: mongodb aggregation-framework