Сортировка данных

Рейтинг: 0Ответов: 1Опубликовано: 09.02.2015

Нужно провести сортировку списка пользователей (таблица users) по количеству сообщений (таблица posts), а также по сумме рейтинга ( win + lose, сортируется отдельно ). Примерная структура таблиц:

users:

  • _id
  • displayName
  • E-mail
  • win
  • lose

posts

  • _id
  • user
  • msg
  • (bool) delete

Как можно реализовать такую сортировку ?

Ответы

▲ 2Принят

В sql данная задача тривиальна:

    select u.name, count(p.msg) as cnt from UU u 
left join PP p on (p.user_id = u.id) group by u.name order by cnt desc

Для mongoDB все страшнее. Есть такая утилита SlamData (http://slamdata.com/). Она позволяет транслировать sql-выражения в запросы mongoDB

Например, для вашей задачи SQL придется слегка изменить:

select distinct TT.cnt, TT.displayName from (select u.displayName, count(p.msg) as cnt from users u  join posts p on (p.user = u._id) group by p.user ) as TT

И результатом будет что-то такое: http://pastebin.com/gFmFEXnP