Mongo DB Laravel 中的 Order By 和 Group By

3
我是MongoDB的新手,正在我的Laravel项目中使用jenssegers库。我有一张名为'table1'的表格,它有'_id'、'c1'、'c2'、'c3'和'created_at'这些列。我需要将下面的SQL查询转换成MongoDB。
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列分组并再次按照创建时间列排序结果行时,只需要包含最大created_at值的行。

我找到了这个答案,但我认为我的问题有点更复杂: https://dev59.com/9IDba4cB1Zd3GeqPFIBL#24143255

这可能对我的问题有用且相关: http://blog.chomperstomp.com/how-to-order-by-before-group-by-with-mysql/


请让您的代码更加透明,每个表达式都要从新的一行开始。 - Liniel
1
为什么在没有聚合函数(例如MAX、SUM、COUNT)的情况下要使用GROUP BY?此外,通用的GROUP BY规则是: 如果指定了GROUP BY子句,则SELECT列表中的每个列引用必须标识一个分组列或是一个集合函数的参数! - jarlh
@jarlh 你是对的,如果他选择“MAX(created_at)”和“GROUP BY _ID”,那么就可以运行,但我不了解MongoDB。 - Liniel
我已经编辑了我的问题并添加了count(c3)和格式化的代码。 - Mokhlesur Rahman
1个回答

0

我认为我的问题很明确,我想将那个 SQL 查询转换为 MongoDB。我搜索的比你给的要多得多。 - Mokhlesur Rahman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接