MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

variabile con notazione punto mongodb

Devi creare il tuo oggetto con chiave variabile separatamente, perché JS prima di ES2015 non consente nient'altro che stringhe costanti nella sintassi letterale dell'oggetto:

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

MODIFICA in ES2015, è ora possibile utilizzare un'espressione come chiave in un oggetto letterale, utilizzando [expr]: value sintassi, e in questo caso anche utilizzando l'interpolazione di stringhe di backtick ES2015:

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

Il codice sopra funziona in Node.js v4+