You need to enable JavaScript to run this app. 用PyMongo聚合查询MongoDB推特数据获取用户提及关系及次数
优惠活动
大模型
产品
解决方案
定价
更多

用PyMongo聚合查询MongoDB推特数据获取用户提及关系及次数

调整后的聚合管道写法

你原来的管道没有保留发推作者字段,且分组维度仅为被提及用户,调整后管道如下:

tweets.aggregate([
    # 同时保留发推作者和提及用户列表
    {
        '$project': {
            'author': '$user.screen_name',
            'mentions': '$entities.user_mentions.screen_name',
            '_id': 0
        }
    },
    # 拆分提及列表,每个提及单独成一条文档
    {'$unwind': '$mentions'},
    # 按「作者+被提及用户」的组合分组统计次数
    {
        '$group': {
            '_id': {
                'author': '$author',
                'mentioned': '$mentions'
            },
            'count': {'$sum': 1}
        }
    },
    # 调整输出字段格式匹配你的需求
    {
        '$project': {
            'author': '$_id.author',
            'mentioned': '$_id.mentioned',
            'count': 1,
            '_id': 0
        }
    }
])

逻辑说明

  1. 第一阶段$project新增了author字段,保留每条推文的发件人screen_name,同时保留原有的提及用户列表
  2. $unwind阶段不变,把单条推文里的多个@用户拆分为独立的记录行
  3. $group阶段不再仅以被提及用户为分组键,改为「发件人+被提及用户」的复合键,这样就能统计到每个发件人对特定用户的提及次数
  4. 最后新增的$project阶段把复合主键里的字段提取到顶层,输出结构就和你预期的完全一致

如果同一个作者多次提及同一个用户,count字段会自动累加,符合用户提及网络的构建需求。

内容的提问来源于stack exchange,提问作者botti23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 10:36:03