【问题标题】:How do I calculate a field in all documents based on a value of a particular document in the same collection?如何根据同一集合中特定文档的值计算所有文档中的字段?
【发布时间】:2016-12-28 23:49:46
【问题描述】:

我是 MongoDb 的新手,并试图在其中实现一些基本计算。我有collection,calc,如下

{ "_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 }

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      • 2018-08-26
      • 2020-10-02
      • 2023-03-08
      • 2018-06-10
      相关资源
      最近更新 更多