我想为猫鼬中的嵌套文档写一个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”),以便我可以更新projectName。
我想不出如何编写相同的put方法。请帮忙!在此先感谢!
答案 0 :(得分:0)
您可以使用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
}
})
答案 1 :(得分:0)
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{
}
})})
代替forEach尝试上述查询