2013-08-25 3 views
2

Я хочу, чтобы сделать запрос, чтобы получить своего рода рейтинг пользователей с большим количеством твитов в моей базе данных MongoDB:Count подзапрос в отборное - MongoDB

var TeewtSchema = new Schema({ 
    userId: Number, 
    twweetId : Number, 
    createdAt: Date, 
    cuerpo: String, 
    nameUser: String, 
    location: String, 
    avatar: String, 
    user: String 
}); 

MySql, что что-то подобное:

SELECT *, (SELECT COUNT(*) FROM `TABLE 1` WHERE userId = t.userId) rank FROM `TABLE 1` t GROUP BY t.userId ORDER BY rank DESC 

но в MongoDB я понятия не имею, как это сделать

+0

Используйте поддержку Монго для [агрегации] (http://docs.mongodb.org/manual/aggregation/) для этого. – JohnnyHK

ответ

1

Да, как говорит JohnnyHK, вы должны использовать aggregation framework для этого. Что-то вроде следующего должно сделать это:

db.collection.aggregate(
    { $group : { _id : "$userId", numTweets = { $sum : 1 } }, // sum tweets over each user 
    { $sort : { numTweets : -1 } } // sort by numTweets in descending order 
) 
Смежные вопросы