【问题标题】:Group and query by month and day in Mongo DBMongodb中按月和日分组查询
【发布时间】:2014-12-03 15:58:38
【问题描述】:

我有一个名为“orders”的集合,在它的文档中我有属性_id、totalAmount 和orderTime。我想按天排序给定月份的订单总量。这是 MySQL 查询。(假设给定月份是 9)

SELECT EXTRACT(DAY FROM orderTime) as day, SUM(totalAmount)
FROM orders
where EXTRACT(MONTH FROM orderTime)=9
GROUP BY day;

我需要一个执行完全相同任务的 Mongo 查询。无论如何我可以做到这一点吗?

【问题讨论】:

  • orderTimeISODate 字段吗?请展示一些示例数据。

标签: mongodb mongodb-query


【解决方案1】:

假设orderTimeISODate字段,你需要使用聚合管道如下:

  • Project 每条记录的字段,用于描述其日期和月份值。
  • Match 月值为 9 的所有记录。
  • Group 按天字段计算totalAmount 的总和 字段。
  • 然后project 必填字段。

代码:

db.orders.aggregate([
{$project:{"totalAmount":1,
           "day":{$dayOfMonth:"$orderTime"},
           "month":{$month:"$orderTime"}}},
{$match:{"month":9}},
{$group:{"_id":"$day",
         "sum":{$sum:"$totalAmount"},
         "day":{$first:"$day"}}},
{$project:{"_id":0,
           "sum":1,
           "day":1}}
])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    相关资源
    最近更新 更多