Anda perlu membuat objek dengan kunci variabel secara terpisah, karena JS sebelum ES2015 tidak mengizinkan apa pun selain string konstan dalam sintaks literal objek:
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
}, ...);
EDIT di ES2015, sekarang dimungkinkan untuk menggunakan ekspresi sebagai kunci dalam literal objek, menggunakan [expr]: value
sintaks, dan dalam hal ini juga menggunakan interpolasi string backtick ES2015:
var stuffID = 5;
collection.update({
"id": id,
}, {
"$inc": {
[`stuff.${stuffID}`]: 1
}
}, ...);
Kode di atas berfungsi di Node.js v4+