kzr*_*sal 3 mongoose mongodb node.js mongodb-query
我正在收集称为“公司”的文件。
公司1-
{
_id: '1',
data:[
{_id:'11', value: 'emp11'},
{_id:'12', value: 'emp12'}
]
}
Run Code Online (Sandbox Code Playgroud)
公司2-
{
_id: '2',
data:[
{_id:'21', value: 'emp21'},
{_id:'22', value: 'emp22'}
]
}
Run Code Online (Sandbox Code Playgroud)
现在,我想将值“ emp11”更新为“ emp99”。我正在采用这种方法-
companyModel.findById('1', function(err, company) {
return company.data.update(
{_id: '11'},
{$set: {value: 'emp99'}}
);
});
Run Code Online (Sandbox Code Playgroud)
我可以找到这家公司,但是之后却显示出一个错误-
company.data.update is not a function
Run Code Online (Sandbox Code Playgroud)
请提出可能的解决方案。
companyModel.update(
{ "_id" : :"1", "data._id": "11" },
{ "$set": { "data.$.value": "emp99" }},
function(err, company) {
console.log(company)
})
Run Code Online (Sandbox Code Playgroud)
有没有必要使用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()
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4250 次 |
| 最近记录: |