Вам необходимо создать объект с переменным ключом отдельно, потому что JS до ES2015 не разрешает ничего, кроме константных строк в синтаксисе литерала объекта:
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 в ES2015, теперь можно использовать выражение в качестве ключа в литерале объекта, используя синтаксис [expr]: value
, и в этом случае также используя интерполяцию обратной строки ES2015:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Код выше работает в Node.js v4 +