$push (обновление) MongoDB

#arrays #mongodb #push #updates

Вопрос:

Я пытаюсь обновить все документы коллекции, чтобы ввести два новых элемента в массив измерений (medidas), но только в документах с «sensor_id: 2». Коллекция db.datos_sensores2 содержит документы, такие как:

 {
    "_id" : ObjectId("609c2c2d420a73728827e87f"),
    "timestamp" : ISODate("2020-07-01T02:15:00Z"),
    "sensor_id" : 1,
    "location_id" : 1,
    "medidas" : [
        {
            "tipo_medida" : "Temperatura",
            "valor" : 14.03,
            "unidad" : "ºC"
        },
        {
            "tipo_medida" : "Humedad_relativa",
            "valor" : 84.32,
            "unidad" : "%"
        }
    ]
}

{
    "_id" : ObjectId("609c2c2d420a73728827e880"),
    "timestamp" : ISODate("2020-07-01T02:15:00Z"),
    "sensor_id" : 2,
    "location_id" : 1,
    "medidas" : [
        {
            "tipo_medida" : "Emision_CO2",
            "valor" : 1.67,
            "unidad" : "gCO2/m2"
        },
        {
            "tipo_medida" : "Consumo_electrico",
            "valor" : 0.00155,
            "unidad" : "kWh/m2"
        }
    ]
}
 

Я написал это:

 db.datos_sensores2.update(
{"_id":0, "location_id":1, "sensor_id": 2},
{$push:{"$medidas":{$each:[
              {"precio_kWh":0.102,"unidad":"€/kWh"}, 
              {"superficie":450,"unidad":"m2"}]}}},{multi:true})
 

Но ничего не произошло…

Ответ №1:

в первом запросе обновления есть _id:0 и не удалось найти документ, еще одна вещь $medidas в запросе обновления не нужна $ , и ошибка связана с использованием этого обновления

 db.collection.update({
  "location_id": 1,
  "sensor_id": 2
},
{
  $push: {
    "medidas": {
      $each: [
        {
          "precio_kWh": 0.102,
          "unidad": "€/kWh"
        },
        {
          "superficie": 450,
          "unidad": "m2"
        }
      ]
    }
  }
},
{
  multi: true
})
 

https://mongoplayground.net/p/jsVRQ3eDUlh

Комментарии:

1. мохаммад Наими, ты потрясающий! Я действительно ценю ваше время и объяснения. Как вы заметили, я совершенно новичок в этой программе, и это помогает мне многому научиться. Большое вам спасибо!