1

私が持っている最新のデータに基づいて、Twitter投稿の作成者に関するデータを取得しようとしています

Twitter 投稿のコレクションが与えられた場合、著者ごとの最新の投稿から情報を取得したいと考えています。著者ごとに友達数を取得したい。

おおまかにコレクションにはこのようなデータがあります。

[{"post":
{"post_date": "Sat, 24 Mar 2012 05:52:21 +0000" {"author": {"author_id":123, "friend_count":321}} ,{"post_date": "Sat, 17 Mar 2012 03:22:11 +0000" {"author": {"author_id":123, "friend_count":311}} ,{"post_date": "Sat, 10 Mar 2012 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"}}}
)

あなたが与えた単純化されたサンプルデータを考えると、これは$sortpost_date によって新しいものから古いものへと変化するため、author_id でグループ化すると、$firstレコードは最新のものになります。

于 2013-09-20T05:17:43.423 に答える