如何根据同一集合中特定文档的值计算所有文档中的字段?

时间:2016-08-22 12:16:50

标签: mongodb collections pymongo aggregation-framework mongodb-aggregation

我是MongoDb的新手,并尝试在其中实现一些基本计算。我有收集,计算,如下所示

{ "_id" : 1, "value" : 10}
{ "_id" : 2, "value" : 20}
{ "_id" : 3, "value" : 20}
{ "_id" : 4, "value" : 30}
{ "_id" : 5, "value" : 30}
{ "_id" : 6, "value" : 30}

我想将" _id":1的值添加到该集合中文档的所有值字段,并使用计算结果创建一个新字段。所以我要找的最终结果如下。

{ "_id" : 1, "value" : 10, "sumup":20 }
{ "_id" : 2, "value" : 20, "sumup":30 }
{ "_id" : 3, "value" : 20, "sumup":30 }
{ "_id" : 4, "value" : 30, "sumup":40 }
{ "_id" : 5, "value" : 30, "sumup":40 }
{ "_id" : 6, "value" : 30, "sumup":40 }

1 个答案:

答案 0 :(得分:0)

你可以在mongo shell中试试这个:

db.collection.aggregate([
    { 
        "$project": { 
            "value": 1, 
            "sumup": { 
                "$add": [ "$value", (db.collection.findOne({"_id": 1})).value ] 
            } 
        } 
    }
])