2013-09-20 2 views
1

Я пытаюсь получить некоторые данные о авторах щебета сообщений, на основе последних данных яMongoDB Map-Reduce Найти значение за последние записи на пользователь

Учитывая коллекцию щебета сообщений, я хочу, чтобы тянуть информация из последней публикации на автора - т.е. Я хочу, чтобы каждый автор подсчитал друга.

Грубо коллекция имеет такие данные.

[{ "пост":
{ "POST_DATE": "Сб, 24 марта 2012 5:52:21 +0000" { "автор": { "author_id": 123, "FRIEND_COUNT": 321}} , {"post_date": "Сб, 17 марта 2012 03:22:11 +0000" {"author": {"author_id": 123, "friend_count": 311}} , {"post_date" : "Сб, 10 марта 2012 3:22:11 +0000" { "автор": { "author_id": 123, "FRIEND_COUNT": 331}}}}]

Я не хочу, чтобы max of friend_count, но значение из последнего сообщения.

Thanx

ответ

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 запись будет один, что это последний.

+0

Asya is right. Кстати, [v2.2] была введена [структура агрегации] (http://docs.mongodb.org/manual/aggregation/). – visualzhou

+0

Благодарим вас за ответ агрегации. Кто-нибудь знает, как это будет выглядеть как сокращение карты (для моего образования). – robert

+0

Я знаю, как бы это выглядело - вы можете обнаружить, что это учебное пособие для выполнения работы по созданию карты/сокращения (это позволит вам оценить структуру агрегации гораздо больше!) :) –

Смежные вопросы