如何更新另一个数组中的数组中的值?

时间:2019-06-23 13:07:20

标签: mongodb nosql

我有以下文件。其中有多个字段驻留在数组中的数组中。而且我终生无法更新数组中的字段。

{ 
    "_id" : ObjectId("5d0bb43c6e6106b614462259"), 
    "row_number" : NumberInt(9), 
    "kenteken" : "0001WZ", 
    "afstand_hart_koppeling_tot_achterzijde_voertuig" : NumberInt(559), 
    "datum" : {
        "eerste_afgifte_nederland" : ISODate("1980-01-07T00:00:00.000+0000"), 
        "eerste_toelating" : "1980-01-07", 
        "tenaamstelling" : "2007-07-19"
    }, 
    "maten" : {
        "breedte" : NumberInt(192)
    }, 
    "kleur" : {
        "eerste" : "N.v.t.", 
        "tweede" : "N.v.t."
    }, 
    "europees" : {
        "voertuigcategorie" : "O2"
    }, 
    "export_indicator" : "Nee", 
    "handelsbenaming" : "A8 KRG", 
    "inrichting" : "voor vervoer boten", 
    "laadvermogen" : NumberInt(720), 
    "massa" : {
        "ledig_voertuig" : NumberInt(280), 
        "maximum" : {
            "voertuig" : {
                "technisch" : NumberInt(1000), 
                "toegestaan" : NumberInt(1000)
            }
        }
    }, 
    "merk" : "PEKAWEE", 
    "openstaande_terugroepactie_indicator" : "Nee", 
    "plaats_chassisnummer" : "op centrale balk 160 cm v. achteras", 
    "taxi_indicator" : "Nee", 
    "voertuigsoort" : "Aanhangwagen", 
    "wacht_op_keuren" : "Geen verstrekking in Open Data", 
    "wam_verzekerd" : "N.v.t.", 
    "carrosserie" : [
        {
            "volgnummer" : NumberInt(1), 
            "type" : "DB", 
            "omschrijving" : "Autonome aanhangwagen", 
            "specificatie" : [
                {
                    "carrosseriecode" : "21", 
                    "omschrijving" : "Voor vervoer boten", 
                    "carrosserie_voertuig_nummer_code_volgnummer" : NumberInt(1)
                }
            ]
        }
    ]
}

当我尝试使用以下任何语句更新它时,它总是给我错误。

db.getCollection("RDW dataset").update(
    {
        "datum.eerste_afgifte_nederland" : { $lte : new ISODate("2005-01-01")},
    },
    {
        $set : {"carrosserie.$[].specificatie.$[].carrosseriecode" : "5"}
    },
    {
        multi : true
    }
)

db.getCollection("RDW dataset").update(
    {
        "datum.eerste_afgifte_nederland" : { $lte : new ISODate("2005-01-01")},
    },
    {
        $set : {"carrosserie.0.specificatie.$.carrosseriecode" : "5"}
    },
    {
        multi : true
    }
)

我在这里做错了什么。我无法使其正常工作。

0 个答案:

没有答案