我有下面的方法来查找和更新MongoDB中的数组:
app.post("/respostaAprovChamado", function(req, res){
if(req.isAuthenticated()){
Chamado.updateMany(
{"_id": req.body.idChamadoPost, "listaAprovadores.0.nome": { $in: [req.user.realNome] }},
{
$set: {'listaAprovadores.0': [{nome: req.user.realNome}, {status: req.body.respostaAprov}]}
},
{
returnNewDocument: true
}
, function( error, result){
if(error){
res.send(error)
} else{
res.redirect('/aprovChamados')
}
});
}else{
res.redirect('/login')
}
})
它工作正常,但是"listaAprovadores.0.nome"
将更新数组中的第一条记录,所以我尝试使用for()迭代更新第二条记录:
app.post("/respostaAprovChamado", function(req, res){
for(let i = 0; i < 1; i++){
if(req.isAuthenticated()){
Chamado.updateMany(
{"_id": req.body.idChamadoPost, "listaAprovadores.i.nome": { $in: [req.user.realNome] }},
{
$set: {'listaAprovadores.0': [{nome: req.user.realNome}, {status: req.body.respostaAprov}]}
},
{
returnNewDocument: true
}
, function( error, result){
if(error){
res.send(error)
} else{
res.redirect('/aprovChamados')
}
});
}else{
res.redirect('/login')
}
}
})
但是for()不起作用。我怎样才能使update在数组的记录上迭代工作呢?
1条答案
按热度按时间xwbd5t1u1#
i
需要作为查询的一部分进行计算。变更:将
"listaAprovadores.i.nome"
变更为listaAprovadores.${i}.nome