我的收藏品名为"订单"在我的文档中,我有_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查询。无论如何我能做到这一点吗?
答案 0 :(得分:2)
假设orderTime
是ISODate
字段,您需要使用汇总管道,如下所示:
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}}
])