好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

mongodb实现数组对象求和方法实例

前言 /* 1 */ { "_id" : ObjectId("5c414a6a0847e00385143003"), "date" : "2019-01-18 09", "data" : [ { "app_platform" : "ios", "user" : 3028 }, { "app_platform" : "android", "user" : 4472 }, ] } ...

如果可以,请先思考下mongodb语句如何实现。

从输入文档中解构一个数组字段,为每个元素输出一个文档。每个输出文档都是输入文档,数组字段的值由元素替换。

db.getCollection('user').aggregate([ { $project: { _id: 1, data: 1, date: 1} }, { $match: {"date": "2019-01-18 09"} }, { $unwind: "$data" }, ]) 牋 "date" : "2019-01-18 09", 牋 "data" : { 牋牋牋 "app_platform" : "ios", 牋牋牋 "user" : 3028 牋 } } /* 2 */ { 牋 "_id" : ObjectId("5c414a6a0847e00385143003"), 牋 "date" : "2019-01-18 09", 牋 "data" : { 牋牋牋 "app_platform" : "android", 牋牋牋 "user" : 4472 牋 } }

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"]} }, } ]) 牋 "date" : "2019-01-18 09", 牋 "data" : { 牋牋牋 "app_platform" : "ios", 牋牋牋 "user" : 3028 牋 } }

让我们继续计算,此时只需要使用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"}} } ])

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对自学php网的支持。

查看更多关于mongodb实现数组对象求和方法实例的详细内容...

  阅读:67次