Sie müssen Ihr Objekt mit variablem Schlüssel separat erstellen, da JS vor ES2015 nichts anderes als konstante Zeichenfolgen in der Objektliteralsyntax zulässt:
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
}, ...);
BEARBEITEN in ES2015 ist es jetzt möglich, einen Ausdruck als Schlüssel in einem Objektliteral zu verwenden, indem [expr]: value
verwendet wird Syntax, und in diesem Fall auch mit ES2015-Backtick-String-Interpolation:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Der obige Code funktioniert in Node.js v4+