【问题标题】:Order By, Group By in Mongo DB LaravelMongo DB Laravel 中的排序方式、分组方式
【发布时间】: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


【解决方案1】:

你必须使用聚合函数查看更多mongodb.aggregation

【讨论】:

  • 我想我的问题很清楚,我想将该 SQL 查询转换为 mongo db。我搜索的比你给的多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-23
  • 2017-10-05
  • 2015-09-17
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多