猫鼬中嵌套文档的访问 ID



我想用快递为猫鼬中的嵌套文档编写一个put方法。

我无法访问嵌套文档的 id。

{ "_id" : ObjectId("5b8d1ecbb745685c31ad8603"),  
"name" : "abc",  
"email" : "abc@gmail.com",  
"projectDetails" : [   
{  
"technologies" : [   
"abc",   
"abc"  
],  
"_id" : ObjectId("5b8d1ecbb745685c31ad8604"),  
"projectName" : "abc",  
"projectDescription" : "abc",  
"manager" : "abc",  
"mentor" : "abc"  
}  
],  
"__v" : 0  
}  

我正在尝试访问 id ("5b8d1ecbb745685c31ad8604"(,以便我可以更新项目名称。

我想不出如何为相同的方法编写放置方法。请帮忙!提前感谢!!

您可以使用model.findOne()然后save()更新文档而不是model.findOneAndUpdate()

var projectId = "5b8d1ecbb745685c31ad8604";
var newProjectName = "def"; 
model.findOne({'projectDetails._id': projectId}, (err, data) => {
if (data) {
data.projectDetails.forEach((project) => {
if (project._id == projectId) {
project.projectName = newProjectName;
}
});
data.save();
} else {
// throw error message
}
})
app.put('/api/project/:id',(request,response)=>{
const projectId = request.params.id;
const projectName = "test";
db.users.update({"projectDetails._id":projectId},{$set:{"projectDetails.$.projectName":projectName}},function(err,data){
if(data){
}else{
}
})})

而不是每个尝试上面的查询

最新更新