Heim  >  Fragen und Antworten  >  Hauptteil

javascript - 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
             }]
     }
}
PHP中文网PHP中文网2750 Tage vor244

Antworte allen(2)Ich werde antworten

  • 阿神

    阿神2017-04-10 15:22:06

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

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

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

    Antwort
    0
  • PHPz

    PHPz2017-04-10 15:22:06

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

    Antwort
    0
  • StornierenAntwort