【发布时间】:2015-02-16 23:04:44
【问题描述】:
我是 Mongo DB 的新手,我在 Laravel 项目中使用 jenssegers 库。 我有一个名为 'table1' 的表,其中有 '_id'、'c1'、'c2'、'c3'、'created_at' 列。我需要将下面的 SQL 查询转换为 mongo db。
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”在内的所有列。当按 c2 列分组时,我只需要按“order by”包含最大 created_at 值的行,并按 created_at 列再次对结果行进行排序。
我找到了这个答案,但我认为我的问题有点复杂: https://stackoverflow.com/a/24143255/3386509
这可能很有用并且与我的问题有关: http://blog.chomperstomp.com/how-to-order-by-before-group-by-with-mysql/
【问题讨论】:
-
请让您的代码更透明,并在新行中开始每个表达式。
-
当您没有聚合函数(例如 MAX、SUM、COUNT)时,为什么要进行 GROUP BY?一般的 GROUP BY 规则还说:如果指定了 GROUP BY 子句,则 SELECT 列表中的每个列引用必须要么标识一个分组列,要么是一个集合函数的参数!
-
@jarlh 你是对的,如果 hi select 'MAX(created_at)' and 'GROUP BY _ID' then will work,但我不知道 MongoDB。
-
我已经编辑了我的问题并添加了 count(c3) 和格式化代码。
标签: sql mongodb laravel-4 mongodb-query