请问如何计算“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
}]
}
}
阿神2017-04-10 15:22:06
使用 Mongodb 的聚合可以实现求和。但是不知道是不是楼主想要的实现方式。
javascript
db.Collection.aggregate([ { $unwind: "$repos.com" }, { $group: { _id: "$_id", update: { $sum : "$repos.com.a" } } } ])
下面是我使用 Robomongo 是操作的例子:
PHPz2017-04-10 15:22:06
这样需要读写的复杂操作,没有直接的数据库查询语言可以使用。聚合可以进行复杂计算,但是只能读数据,写还要自己写代码完成。所以,不如直接随便用你喜欢的语言花10分钟写个程序,20000个文档执行起来最多也就几秒吧…… MongoDB 的驱动都那么容易上手,不成问题啦。