gpt4 book ai didi

node.js - Mongoose :更新特定文档数组的元素

转载 作者:可可西里 更新时间:2023-11-01 09:20:37 25 4
gpt4 key购买 nike

我有一组名为“公司”的文档。

公司 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

请提出一个可能的解决方案。

最佳答案

companyModel.update(
{ "_id" : :"1", "data._id": "11" },
{ "$set": { "data.$.value": "emp99" }},
function(err, company) {
console.log(company)
})

不需要使用findById,直接用这个即可。在 mongo 更新中,您需要搜索要更新的文档和字段。您要更新的字段是必不可少的,因为它用于在您使用 $ 时定位数组的位置。

但是您也可以按照以下方式进行操作:

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()
});

关于node.js - Mongoose :更新特定文档数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51205041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com