簡體   English   中英

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. 您可以創建一個 Change Stream 來監控 field1 和 field2 以檢查更改。 進行更改后,您可以自動更新存儲在數據庫中的總數。 有關如何在 Python 中創建更改流的更多信息,請參閱https://developer.mongodb.com/quickstart/python-change-streams

  3. 如果您的數據庫存儲在MongoDB Atlas (MongoDB 的完全托管的數據庫即服務)中,您可以使用觸發器來監視 field1 和 field2 的更改。 觸發器建立在與變更流相同的概念之上。 觸發器稍微簡單一些,因為您不必擔心自己托管和管理 Change Stream。 有關觸發器的更多信息,請參閱https://docs.atlas.mongodb.com/triggers/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM