Twitter 数据 - 查找 MongoDB 中被提及最多的用户

2024-04-22

假设我有来自 Twitter API 的流数据,并且将数据作为文档存储在 MongoDB 中。我想要找到的是计数screen_name under entities.user_mentions.

{
    "_id" : ObjectId("50657d5844956d06fb5b36c7"),
    "contributors" : null,
    "text" : "",
    "entities" : {
        "urls" : [ ],
        "hashtags" : [
            {
                "text" : "",
                "indices" : [
                    26,
                    30
                ]
            },
            {
                "text" : "",
                "indices" : []
            }
        ],
        "user_mentions" : [ 
                {
                    "name":"Twitter API", 
                    "indices":[4,15], 
                    "screen_name":"twitterapi", 
                    "id":6253282, "id_str":"6253282"
                }]
    },
    ...

我尝试使用地图减少:

map = function() {
    if (!this.entities.user_mentions.screen_name) {
        return;
    }

    for (index in this.entities.user_mentions.screen_name) {
        emit(this.entities.user_mentions.screen_name[index], 1);
    }
}

reduce = function(previous, current) {
    var count = 0;

    for (index in current) {
        count += current[index];
    }

    return count;
}

result = db.runCommand({
    "mapreduce" : "twitter_sample",
    "map" : map,
    "reduce" : reduce,
    "out" : "user_mentions"
});

但它不太有效...


Since entities.user_mentions是一个数组,您希望为其中的每个 screen_name 发出一个值map():

var map = function() {
    this.entities.user_mentions.forEach(function(mention) {
        emit(mention.screen_name, { count: 1 });
    })
};

然后通过唯一的 screen_name 来计算值reduce():

var reduce = function(key, values) {
    // NB: reduce() uses same format as results emitted by map()
    var result = { count: 0 };

    values.forEach(function(value) {
        result.count += value.count;
    });

    return result;
};

注意:要调试你的map/reduce JavaScript函数,你可以使用print() and printjson()命令。输出将出现在您的mongod log.

编辑:为了比较,这里是一个使用新的示例聚合框架 http://docs.mongodb.org/manual/reference/aggregation/在 MongoDB 2.2 中:

db.twitter_sample.aggregate(
    // Project to limit the document fields included
    { $project: {
        _id: 0,
        "entities.user_mentions" : 1
    }},

    // Split user_mentions array into a stream of documents
    { $unwind: "$entities.user_mentions" },

    // Group and count the unique mentions by screen_name
    { $group : {
        _id: "$entities.user_mentions.screen_name",
        count: { $sum : 1 }
    }},

    // Optional: sort by count, descending
    { $sort : {
        "count" : -1
    }}
)

最初的 Map/Reduce 方法最适合大型数据集,正如 Twitter 数据所暗示的那样。有关 Map/Reduce 与聚合框架限制的比较,请参阅 StackOverflow 问题的相关讨论MongoDB group()、$group 和 MapReduce https://stackoverflow.com/questions/12337319/mongodb-group-group-and-mapreduce/12340283#12340283.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Twitter 数据 - 查找 MongoDB 中被提及最多的用户 的相关文章

  • Mongoose,索引位置数组

    我在文档中有一个位置数组 我想在该数组上添加 2dSpere 索引 那可能吗 var LocationSchema new Schema type type String required true geometry type type S
  • 如何在 Mongoose 中设置文档创建的 TTL 日期?

    我正在尝试做一个promoCodeMongoose 中的架构 创建时 我需要能够设置促销代码的到期日期 促销代码不一定相同TTL 我在看这个问题 https stackoverflow com questions 14597241 sett
  • 从 mongoDB 数组中获取特定元素[重复]

    这个问题在这里已经有答案了 我有像下面这样的 mongo 集合 auther xyz location zzz books book1 b1 date 2 3 00 book1 b2 date 4 9 00 auther pqr locat
  • 自动滚动的实时行情(如 Twitter 的“热门推文”)

    是否有一个好的 Javascript 库可以生成自动滚动列表 例如 Twitter 主页上的 热门推文 最好作为 jQuery 插件 它还应该支持 AJAX 功能 动态添加新列表项 由于我们对现有的解决方案并不满意 因此我们从头开始实施了一
  • 可以设计自定义推文按钮并利用数据属性吗?

    我正在使用自己的样式创建自定义推文按钮 但是当您选择自定义自己的样式时 您似乎无法使用数据属性 数据文本 数据网址等 仅当您使用使用小部件 javascript 的 Twitter 样式按钮时 数据属性的使用才显得可用 http platf
  • 注册不起作用 - 服务器返回 404 错误代码

    MongoDB Stitch iOS SDK 注册问题 我试过这个 let stitchClient StitchClient appId
  • 如何在 MongoDB 中存储 blob 数据?

    我想知道是否可以在 mongodb 中插入 blob 数据 这个过程是什么 是否需要任何其他软件 在数据库中存储大文件是没有问题的 使用mongofiles See mongodb com 上的文章 https www mongodb co
  • 如何在 mongodb + C# 中计数、选择和更新嵌套元素

    我正在创建一个开源社交网络 我不知道是否可以在此处发布 URL 使用 net core 2 1 mongo atlas 使用驱动程序 v2 9 2 我正在从 MS SQL 我知道如何对其进行操作 迁移到 mongo 我仍在学习 我有两个实体
  • Swift 尝试呈现 UIAlertController,其视图不在窗口层次结构中(在 TWTRShareEmailViewController 之后呈现)

    我在应用程序的注册过程中使用 Twitter 登录 我正在询问用户的电子邮件 一旦我得到它 我想展示一个 UIAlertController 这是我的代码 func askForTWMail if Twitter sharedInstanc
  • 通过 iOS 应用程序在 Twitter 上分享视频

    是否可以使用 SLRequest 分享视频 我可以使用相同的方式共享图像 SLRequest postRequest SLRequest requestForServiceType SLServiceTypeTwitter requestM
  • 如何更新 mongodb PHP 中的所有文档

    我正在设置一个 cronjob 来更新该字段views 15关于集合中的所有文档query 这就是我所拥有的 应该有效 update array set gt array views 15 gt 0 db gt queries gt upd
  • mongodb 安装 - 要求?

    有人知道在 mongo 上安装标准 ubuntu 需要多少磁盘空间和内存吗 试图找出我的 VPS 需求 没有最低要求 但我不建议在与网络服务器相同的机器上运行 Mongo MongoDB 自动使用机器上的所有空闲内存作为其缓存 http d
  • NodeJS + Express + Mongo 会话存储

    我目前在尝试在 MongoDb 中存储会话时遇到了很大的麻烦 我尝试过express session mongo和connect mongodb 当我尝试加载登录页面时 两者都给出了相同的 500内部服务器错误 这让我觉得也许在某个地方与
  • Mongo Facet 聚合与 Sum

    试图在这个聚合中找出一些简单的东西 元数据下的 totalArrests 字段返回 0 由于某种原因 无法对前一阶段的该字段求和 请指教 const agg await KID aggregate group id source group
  • MongoDB - 手册参考示例

    我正在读手册参考 http docs mongodb org manual reference database references document referencesMongoDB 数据库参考文档的一部分 但我不太理解 解析引用字段
  • Twitter API 与 Scala 2.12 一起使用

    我正在使用 Scala 2 12 使用 SBT 构建 构建 Spark 3 0 0 流应用程序 鉴于所有用于执行此操作的库均适用于 Scala EDIT 我尝试使用库构建时得到的示例输出 object twitter is not a me
  • 在 tweetinvi 中查找推文的 tweetID

    我对 C 编程相对较新 为学校项目自学 并决定尝试使用 TweetInvi 来实现 Twitter 功能 到目前为止 一切进展顺利 身份验证和发布已启动并运行 但我正在努力找出如何使用 DestroyTweet 方法 它和许多其他方法都需要
  • 如何在 mongodb 中使用一个查询更新每个值

    我有一个数据如下 id 1 exist true id 2 exist false id 3 exist false 当我 findOneAndUpdate id 2 exist true 时 我希望使用聚合等在一个查询中自动将 id 1
  • Mongo聚合查询结果在较少的文档中排序

    我在查询我们的一个馆藏时遇到了一个奇怪的问题将结果聚合到另一个集合中 https stackoverflow com a 25936760 1746118 我正在查询已执行某些操作的唯一用户 并在聚合查询中预测每个用户执行的操作计数 var
  • tweepy 计数限制为 200?

    我目前正在尝试检索一些拥有大量关注者的大帐户的关注者 我正在使用 Tweepy 和这段代码 带光标 follower cursors tweepy Cursor api followers id id var count 5000 for

随机推荐