我想将变量传递给查询,但我没有找到如何:
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
}
]
}
答案 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 "});
}
});
})