Você precisa criar seu objeto de chave variável separadamente, porque o JS antes do ES2015 não permite nada além de strings constantes na sintaxe literal do objeto:
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
}, ...);
EDITAR no ES2015, agora é possível usar uma expressão como chave em um literal de objeto, usando
[expr]: value
sintaxe e, neste caso, também usando a interpolação de string de backtick ES2015:var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
O código acima funciona no Node.js v4+