我有这个Mongodb文件
{
"_id" : ObjectId("5a22e86c64b6d80e384f504a"),
"ruc" : "20455412215",
"razon_social" : "EMPRESA A",
"representantes" : [
{
"tipo_representante" : "accionista",
"dni_representante" : "42541773",
"nombres_representante" : "MARIO PEREZ"
},
{
"tipo_representante" : "accionista",
"dni_representante" : "42541774",
"nombres_representante" : "ROBERTO GOMEZ"
}
]
}
我需要将“imagenDNI”:“uploads \ file-1512427693006.png”添加到匹配“dni_representante”的孩子:“42541774”,所以这就是结果:
{
"_id" : ObjectId("5a22e86c64b6d80e384f504a"),
"ruc" : "20455412215",
"razon_social" : "EMPRESA A",
"representantes" : [
{
"tipo_representante" : "accionista",
"dni_representante" : "42541773",
"nombres_representante" : "MARIO PEREZ"
},
{
"tipo_representante" : "accionista",
"dni_representante" : "42541774",
"nombres_representante" : "ROBERTO GOMEZ",
"imagenDNI": "uploads\file-1512427693006.png"
}
]
}
我试试这段代码
db.getCollection('empresas')
.update({ "representantes.dni_representante" : "42541773" }
, {$set: {"representantes.$": { "imagenDNI": 'uploads\file-1512427693006.png' }}})
但它不是添加字段,而是替换整个子字段,显示:
{
"_id" : ObjectId("5a22e86c64b6d80e384f504a"),
"ruc" : "20455412215",
"razon_social" : "EMPRESA A",
"representantes" : [
{
"tipo_representante" : "accionista",
"dni_representante" : "42541773",
"nombres_representante" : "MARIO PEREZ"
},
{
"imagenDNI": "uploads\file-1512427693006.png"
}
]
}
如何添加字段而不是替换?
答案 0 :(得分:1)
由于https://docs.mongodb.com/manual/reference/operator/update/positional/#up.S,您应该使用
db.collection.update( { <query selector> },
{ <update operator>: { "array.$.field" : value } })
所以你可以试试:
db.getCollection('empresas')
.update({ "representantes.dni_representante" : "42541773" }
, {$set: {"representantes.$.imagenDNI": 'uploads\file-1512427693006.png' }})