Vous devez créer votre objet à clé variable séparément, car JS avant ES2015 n'autorise rien d'autre que des chaînes constantes dans la syntaxe littérale d'objet :
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
}, ...);
MODIFIER dans ES2015, il est désormais possible d'utiliser une expression comme clé dans un littéral d'objet, en utilisant [expr]: value
syntaxe, et dans ce cas également en utilisant l'interpolation de chaîne de backtick ES2015 :
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Le code ci-dessus fonctionne dans Node.js v4+