1

我正在尝试根据我拥有的最新数据获取有关 Twitter 帖子作者的一些数据

鉴于 Twitter 帖子的集合,我想从每个作者的最新帖子中提取信息 - 即。我希望每位作者都能获得朋友数。

该集合大致有这样的数据。

[{"post":
{"post_date": "2012 年 3 月 24 日星期六 05:52:21 +0000" {"author": {"author_id":123, "friend_count":321}} ,{"post_date": "2012 年 3 月 17 日星期六 03:22:11 +0000" {"author": {"author_id":123, "friend_count":311}} ,{"post_date": "2012 年 3 月 10 日星期六 03:22:11 +0000" {"author": {"author_id":123, "friend_count":331}} }}]

我不想要friend_count 的最大值,而是最新帖子的值。

谢谢

4

1 回答 1

3

你不需要使用 mapreduce,你可以通过简单的聚合来做到这一点。

大意是:

db.collection.aggregate(
         {$sort:{post_date:-1}}, 
         {$group:{_id:"$author.author_id", friend_count:{$first:"$author.friend_count"}}}
)

鉴于您提供的简化示例数据,$sort它将按 post_date 从最新到最旧,因此当按 author_id 分组时,$first记录将是最新的。

于 2013-09-20T05:17:43.423 回答