Skip to content Skip to sidebar Skip to footer

Get Position With Variable And Then Modify Specific Object In Mongodb

How can I make this query use my variable instead of the hard coded 0? let pos = 0; {$set: {'answers.0.acknowledged': data}}

Solution 1:

Usually you choices are template literals, Array.join, String.concat etc:

let pos = 0;
let data = 'data';

let query = {$set: {[['answers.', pos,'.acknowledged'].join('')]: data}}

console.log(query);

With String.concat:

let pos = 0;
let data = 'data';
let query = {$set: {['answers.'.concat(pos,'.acknowledged')]: data}}
console.log(query);

Array.join, String.concat has a much better browsers support where template literals do not. If they were to be used @ the client side. In your case if you are using them at the back end you probably have nothing to worry about.

Solution 2:

You can use ES6 String Interpolation and Computed Property Names to build the key for $set:

let pos = 0;
let data = 'some data';
let q = {$set: {[`answers.${pos}.acknowledged`]: data}}
console.log(q);

Post a Comment for "Get Position With Variable And Then Modify Specific Object In Mongodb"