MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Variable mit Mongodb-Punktnotation

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+