I want to increase a field inside an object object inside a mongodb document by 1.
var stuffID = 5
collection.update({
"id": id,
},
{
'$inc': {
'stuff.stuffID': 1
}
},
function(err, doc) {
res.end('done');
});
I need to make that stuffID a variable. Any way to do that? Thanks.
This is using node-mongodb-native if that helps.
If you're voting to close can you explain what it is you don't understand?
Dot Notation. MongoDB uses the dot notation to access the elements of an array and to access the fields of an embedded document.
Set variable value in MongoDB save() method Use db. yourCollectionName. save(yourVariableName) to set variable value, wherein “yourVariableName” is your variable.
You need to create your variably-keyed object separately, because JS before ES2015 doesn't permit anything other than constant strings in object literal syntax:
var stuffID = 5
var stuff = {}; // create an empty object
stuff['stuff.' + stuffID] = 1; // and then populate the variable key
collection.update({
"id": id,
}, {
"$inc": stuff // pass the object from above here
}, ...);
EDIT in ES2015, it's now possible to use an expression as a key in an object literal, using [expr]: value
syntax, and in this case also using ES2015 backtick string interpolation:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
The code above works in Node.js v4+
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With