如何在节点js中传递mongodb查询中的var

时间:2018-02-11 12:44:25

标签: arrays node.js mongodb

我想将变量传递给查询,但我没有找到如何:

 db.collection('users').update(
  { "_id":ObjectID(req.params.id)},
  { $set:  { tasks[req.params.pos].done : true }}
  ,(error,resultat)=>{
       if (resultat){
         console.log("mise a jour avec succes ");
         res.send({message:"mise a jour avec succes "});
       } else {
         console.log("Erreur lors du mise a jour ");
         res.send({message:"Erreur lors du mise a jour "});
       }  

     });

这是mongodob文档我想要改变字段,但是使用索引来自变量,如:var x = 5" task [x] .done = true"

{
"_id" : ObjectId("5a730e55114dbc2a0455c630"),
"email" : "unknown@gmail.com",
"password" : "unknown",
"tasks" : [ 
    {
        "title" : "new 5",
        "description" : "dod ododoododododo",
        "date" : "2018-02-07T18:25:14.881Z",
        "done" : false
    }, 
    {
        "title" : "new2",
        "description" : "dod ododoododododo",
        "date" : "2018-02-07T18:25:14.881Z",
        "done" : false
    }
]
}

2 个答案:

答案 0 :(得分:1)

Mongo docs您需要使用位置$运算符

    db.collection('users')
    .update({'tasks.title': 'new2'}, 
    {'$set': {'tasks.$.done': false}},
    (error,resultat)=>{...

答案 1 :(得分:0)

这是解决方案 谢谢大家为解决这个问题做出贡献

connection((db)=>{

let tid = { ["tasks."+req.params.pos+".done"] : true };

let query = { "_id": ObjectID(req.params.id) };

db.collection('users').update(
  { "_id":ObjectID(req.params.id)},
  { $set:    tid}
  ,(error,resultat)=>{
       if (resultat){
         console.log("mise a jour avec succes ");
         res.send({message:"mise a jour avec succes "});
       } else {
         console.log("Erreur lors du mise a jour ");
         res.send({message:"Erreur lors du mise a jour "});
       }  

     });
})