首页 > Mongodb内嵌文档数组数据求和

Mongodb内嵌文档数组数据求和

请问如何计算“com”里面所有文档中“a”的和,并且update将这个和当作一个最外层的键保存,是要用js解决吗?我想批量计算,这样的文档有20000多个...

{ 
    "_id" : 3,
    "repos" : { 
        "com" : [ 
            { "a" : 16555, "t" : 141, "d" : 7633 } ,
            { "a" : 14358, "t" : 121, "d" : 7133 } ,
            { "a" : 12356, "t" : 108, "d" : 2137 } ,  
         ], 
         "self" : [ 
             {     
                 "forks_count" : 54, 
                 "id" : 7370053, 
                 "rank_score" : 0.0006762191350350863
             },
             {     
                 "forks_count" : 54, 
                 "id" : 7370053, 
                 "rank_score" : 0.0006762191350350863
             }]
     }
}

这样需要读写的复杂操作,没有直接的数据库查询语言可以使用。聚合可以进行复杂计算,但是只能读数据,写还要自己写代码完成。所以,不如直接随便用你喜欢的语言花10分钟写个程序,20000个文档执行起来最多也就几秒吧…… MongoDB 的驱动都那么容易上手,不成问题啦。


使用 Mongodb 的聚合可以实现求和。但是不知道是不是楼主想要的实现方式。

javascriptdb.Collection.aggregate([
    { $unwind: "$repos.com" },
    { $group: { _id: "$_id", update: { $sum : "$repos.com.a" } } }
])

下面是我使用 Robomongo 是操作的例子:

【热门文章】
【热门文章】