$project
您所经历的阶段是多余的。您可以轻松地将所有逻辑转移到$group
舞台上,并逐步完成$project
以重新格式化您的响应。
下面是这样的。
[{ "$match": { "$and": [{ updatedAt: { $lt: new Date('1-13-2017') } }, { updatedAt: { $gte: new Date('1-05-2017') } }] } }, { "$group": { "_id": { $dateToString: { format: "%m-%d-%Y", date: "$updatedAt" } }, "delivered": { $sum: { "$cond": { if: { $eq: ["$delivered", true] }, then: 1, else: 0 } } }, "clicked": { $sum: { "$cond": { if: { $eq: ["$clicked", true] }, then: 1, else: 0 } } }, "unsubscribed": { $sum: { "$cond": { if: { $eq: ["$unsubscribed", true] }, then: 1, else: 0 } } } } }, { "$project": { "_id": 0, "date": "$_id", "delivered": 1, "clicked": 1, "unsubscribed": 1 } }]