[英]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)
根據您的目標,您有幾個不同的選擇。
您可以使用聚合管道來計算總和:
[ { '$addFields': { 'total': { '$sum': [ '$field1', '$field2' ] } } } ]
結果將是一個包含總計字段的文檔。 請記住,這不會將總數存儲在您的數據庫中。
{ field1: 5, field2: 3, total: 8, }
您可以創建一個 Change Stream 來監控 field1 和 field2 以檢查更改。 進行更改后,您可以自動更新存儲在數據庫中的總數。 有關如何在 Python 中創建更改流的更多信息,請參閱https://developer.mongodb.com/quickstart/python-change-streams 。
如果您的數據庫存儲在MongoDB Atlas (MongoDB 的完全托管的數據庫即服務)中,您可以使用觸發器來監視 field1 和 field2 的更改。 觸發器建立在與變更流相同的概念之上。 觸發器稍微簡單一些,因為您不必擔心自己托管和管理 Change Stream。 有關觸發器的更多信息,請參閱https://docs.atlas.mongodb.com/triggers/ 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.