sql >> Base de Datos >  >> NoSQL >> MongoDB

variable con notación de punto mongodb

Debe crear su objeto de clave variable por separado, porque JS antes de ES2015 no permite nada más que cadenas constantes en la sintaxis literal del objeto:

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
}, ...);

EDITAR en ES2015, ahora es posible usar una expresión como clave en un objeto literal, usando [expr]: value sintaxis, y en este caso también usando la interpolación de cadena de acento grave ES2015:

var stuffID = 5;
collection.update({
    "id": id,
}, {
    "$inc": {
        [`stuff.${stuffID}`]: 1
    }
}, ...);

El código anterior funciona en Node.js v4+