按月分组和查询Mongodb

时间:2014-12-03 07:37:28

标签: mongodb mongodb-query

我的收藏品名为"订单"在我的文档中,我有_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查询。无论如何我能做到这一点吗?

1 个答案:

答案 0 :(得分:2)

假设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}}
])