Musisz utworzyć swój obiekt ze zmiennym kluczem osobno, ponieważ JS przed ES2015 nie zezwala na nic poza ciągami stałymi w składni literału obiektowego:
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
}, ...);
EDYTUJ w ES2015 można teraz używać wyrażenia jako klucza w literale obiektowym za pomocą [expr]: value
składnia, a w tym przypadku również za pomocą interpolacji ciągu znaków wstecznych ES2015:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Powyższy kod działa w Node.js v4+