Reputation: 187
I want to pass a variable to the query, but I didn't find out how:
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 "});
}
});
and this is the mongodob document I want to change the field done but with the index from a variable like : var x = 5 " task[x].done = true "
{
"_id" : ObjectId("5a730e55114dbc2a0455c630"),
"email" : "[email protected]",
"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
}
]
}
Upvotes: 1
Views: 1151
Reputation: 187
Here is the solution Thank You all for contributing in solving this problem
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 "});
}
});
})
Upvotes: 0
Reputation: 984
From the Mongo docs you need to use the positional $
operator
db.collection('users')
.update({'tasks.title': 'new2'},
{'$set': {'tasks.$.done': false}},
(error,resultat)=>{...
Upvotes: 1