mongodb: 如何使用 python (pymongo) 创建计算字段?

mongodb: how to create a calculated field using python (pymongo)?

有没有办法使用 pymongo 在 mongodb 中创建计算字段?

example = {
    "field1": 1,
    "field2": 2,
    "calculated_field": "field1" + "field2"
}

计算字段必须始终保留公式,如果稍后修改“field1”,结果必须更新。

我已经阅读了 mongodb 文档,我可以看到它可以通过聚合管道来完成,但是 pymongo 的文档在这个过程中并不清楚。

编辑:

目前,我正在尝试插入一个新字段,但未添加该字段。

    pipeline = [
    {
        "$addFields": {
            "calculated_field": {"$sum": ["field1", "field2"]}
        }
    }
]

dbCollection = database["col"]

dbCollection.aggregate(pipeline)

根据您的目标,您有几个不同的选择。

  1. 可以使用聚合管道计算总和:

     [
         {
             '$addFields': {
                 'total': {
                     '$sum': [
                         '$field1', '$field2'
                     ]
                 }
             }
         }
     ]
    

    结果将是一个包含总计字段的文档。请记住,这不会将总数存储在您的数据库中。

      {
          field1: 5,
          field2: 3,
          total: 8,
      }
    
  2. 您可以创建一个更改流来监视 field1 和 field2 以检查更改。进行更改时,您可以自动更新存储在数据库中的总数。有关如何在 Python.

    中创建更改流的详细信息,请参阅 https://developer.mongodb.com/quickstart/python-change-streams
  3. 如果您的数据库存储在 MongoDB Atlas (MongoDB's fully managed database-as-a-service), you can use a Trigger to monitor field1 and field2 for changes. Triggers are built on the same concepts as Change Streams. Triggers are a bit simpler since you don't have worry about hosting and managing the Change Stream yourself. See https://docs.atlas.mongodb.com/triggers/ 中以获得有关触发器的更多信息。