簡體   English   中英

MongoDB - 更新文檔,根據乘法字段 * 常量在數組中添加新項目

[英]MongoDB - Update documents adding new item within array based on multiplication field * constant

我有以下 MongoDB 文檔:

{
    "_id" : ObjectId("5f6915c007f67a4588ec5f93"),
    "timestamp" : "2021-06-01T00:00:00Z",
    "sensor_id" : 1,
    "location_id" : 1,
    "measures" : [
        {
            "measure" : "Electricity_consumption",
            "value" : 0.0134,
            "unit" : "kWh/m2"
        },
        {
            "measure" : "Temperature",
            "value" : 24,
            "unit" : "ºC"
        }
    ]
}

假設千瓦時價格為 0.1 歐元,我想要實現的目標

{
    "_id" : ObjectId("5f6915c007f67a4588ec5f93"),
    "timestamp" : "2021-06-01T00:00:00Z",
    "sensor_id" : 1,
    "location_id" : 1,
    "measures" : [
        {
            "measure" : "Electricity_consumption",
            "value" : 0.0134,
            "unit" : "kWh/m2"
        },
        {
            "measure" : "Temperature",
            "value" : 24,
            "unit" : "ºC"
        },
        {
            "measure" : "Electricity_consumtion_€",
            "value" : 0.00134,
            "unit" : "€/m2"
        }
    ]
}

所以我想向數組中添加一個新項目並將 Electricity_consumption * 0.1 的值指定為“值”。

編輯:澄清一下,問題是 Electricity_consumption 不是常量值,它因文檔而異。 我需要的是將每個 Electricity_consumption 值乘以常數 0.1,並將其值分配給新項目 Electricity_consumption_€。

我需要將此更新添加到我收藏中的所有文檔。

謝謝你的幫助。

要更新集合中的所有文檔,您可以執行以下操作:

const electricity_consumption = 10;

db.collection.updateMany({} ,{
    $push: {
        measures: {
            measure: "Electricity_consumtion_€",
            value: electricity_consumption * 0.1,
            unit: "€/m2"
        }
    }
})

這里我們使用$push運算符將 append 和一個新的 object 放入measures數組中

暫無
暫無

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

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