2014-12-18 5 views
3

Я новичок в Mongo DB, и я использую jenssegers Библиотека в моем проекте Laravel. У меня есть таблица под названием «table1», которая имеет столбцы «_id», «c1», «c2», «c3», «created_at». Мне нужно преобразовать следующий SQL запрос в mongo db.Сортировать по, Группа В Mongo DB Laravel

select *, count(c3) as total from 
(select * from table1 
where c1 in ('1', '32', '6', ...) 
order by created_at desc) as temp 
group by c2 order by created_at desc 

Мне нужно выбрать весь столбец, включая «_id». Мне нужно только строки, содержащие максимальное значение created_at, 'order by' при группировке по столбцу c2 и упорядочивание строк результата с помощью этого столбца created_at.

Я нашел этот ответ, но Мой вопрос немного более сложным, я думаю: https://stackoverflow.com/a/24143255/3386509

И это может быть полезно и в связи с моей проблемой: http://blog.chomperstomp.com/how-to-order-by-before-group-by-with-mysql/

+0

Сделайте свой код более прозрачным и начните каждое выражение в новой строке. – Liniel

+1

Почему вы выполняете GROUP BY, когда у вас нет агрегатных функций (например, MAX, SUM, COUNT)? Также в общем правиле GROUP BY указано: Если указано предложение GROUP BY, каждая ссылка столбца в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции набора! – jarlh

+0

@jarlh Вы правы, если hi выберите «MAX (created_at)» и «GROUP BY _ID», тогда он будет работать, но я не знаю MongoDB. – Liniel

ответ

0

Вы должны использовать функцию агрегации см более mongodb.aggregation

+0

Я думаю, что мой вопрос был ясен, я хочу преобразовать этот SQL-запрос в mongo db. Я искал гораздо больше, чем вы дали. – interstellarDust

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