ES2015より前のJSでは、オブジェクトリテラル構文で定数文字列以外は許可されていないため、可変キーオブジェクトを個別に作成する必要があります。
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
}, ...);
編集 ES2015では、[expr]: value
を使用して、オブジェクトリテラルのキーとして式を使用できるようになりました。 構文、この場合はES2015バッククォート文字列補間も使用します:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
上記のコードはNode.jsv4+
で機能します