迭代数组以查找MongoDB中的特定索引

oyjwcjzk  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(124)

我有下面的方法来查找和更新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在数组的记录上迭代工作呢?

xwbd5t1u

xwbd5t1u1#

i需要作为查询的一部分进行计算。
变更:将"listaAprovadores.i.nome"变更为listaAprovadores.${i}.nome

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')
    }
  }
})

相关问题