Devi creare il tuo oggetto con chiave variabile separatamente, perché JS prima di ES2015 non consente nient'altro che stringhe costanti nella sintassi letterale dell'oggetto:
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
}, ...);
MODIFICA in ES2015, è ora possibile utilizzare un'espressione come chiave in un oggetto letterale, utilizzando [expr]: value
sintassi, e in questo caso anche utilizzando l'interpolazione di stringhe di backtick ES2015:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Il codice sopra funziona in Node.js v4+