让我们继续计算,此时只需要使用group与sum对data里的user字段求和即可,mongodb语句如下:
db.getCollection('user').aggregate([ { $project: { _id: 1, data: 1, date: 1} }, { $match: {"date": "2019-01-18 09"} }, { $unwind: "$data" }, { $match: { "data.app_platform": { $in: ["ios"]} } }, { $group: { _id: null, "user": {$sum: "$data.user"}} } ])
结果如下:
/* 1 */
{
"_id" : null,
"user" : 7500
}
计算得出的user即我们所需要的数据。
其实所有的难点如下:
- 计算数组对象数据时将其转变为多条简单的数据格式,$unwind指令将问题轻松得降低了难度
- mongodb的执行顺序,$project,$match都是顺序执行并作用于之前的操作结果
理解了这两点,相信再难的mongodb语句你也能实现。
happy coding!
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。