我有一个名为“ company”的文件。
公司1-
{
_id: '1',
data:[
{_id:'11', value: 'emp11'},
{_id:'12', value: 'emp12'}
]
}
公司2-
{
_id: '2',
data:[
{_id:'21', value: 'emp21'},
{_id:'22', value: 'emp22'}
]
}
现在,我想将值“ emp11”更新为“ emp99”。 我正在遵循这种方法-
companyModel.findById('1', function(err, company) {
return company.data.update(
{_id: '11'},
{$set: {value: 'emp99'}}
);
});
我能够找到公司,但是之后出现了错误-
company.data.update is not a function
请提出可能的解决方案。
答案 0 :(得分:7)
companyModel.update(
{ "_id" : :"1", "data._id": "11" },
{ "$set": { "data.$.value": "emp99" }},
function(err, company) {
console.log(company)
})
不需要使用findById ,您可以直接使用它。 在mongo update中,您需要搜索文档和要更新的字段。 您要更新的字段至关重要,因为它在您使用$时用于定位数组的位置。
但是您也可以按照以下步骤进行操作:
companyModel.findById('1', function(err, company) {
for(var i =0; i< company.data.length; i++)
if(company.data._id === "11")
break;
if(i<company.data.length)
company.data[i].value = 'emp99'
company.save()
});
答案 1 :(得分:0)
db.company.update({
_id: "1",
data: {
$elemMatch: {
value: 'emp11'
}
}
}, {
$set: {
'data.$.value': 'emp99'
}
})