Estoy tratando de incrementar un valor en una colección en mi base de datos MongoDB a través de la mangosta. Este es el código de demostración se muestra en la página web de la mangosta:El aumento de un campo en una colección MongoDB con Mangosta
var conditions = { name: 'borne' }
, update = { $inc: { visits: 1 }}
, options = { multi: true };
Model.update(conditions, update, options, callback)
Y yo tener algo como esto:
var conditions = { "uniqueId" : itemId };
var update;
if(increase)
update = {$inc : {inStock : 1}};
else
update = {$dec : {inStock : 1}};
Item.update(conditions, update, {}, callback);
Como se puede ver que no hay mucha diferencia con código de la página web de la Mangosta.
El problema es que cuando se ejecuta esta pieza de código, termino tener en mi colección un campo llamado $dec
(o $inc
) que tiene un objeto como un campo en el formulario {inStock : 1}
. Simplemente me gustaría incrementar la entrada inStock de la colección. En el esquema tengo:
var ItemToSell = new Schema({
uniqueId : { type: Number, index: true }
, name : String
, type : String
, inStock : Number
});
¿Alguien puede decir qué estoy haciendo mal? Muchas gracias.
Gracias por la respuesta. Al eliminar el '{}} vacío, resolví el problema que causaba que' {"$ dec": {"inStock": 1}} 'se añadiera a la colección. Tenías razón también con el hecho de que estaba usando una versión anterior de Mongoose PERO aún así no resolvió el problema. Ahora parece que no hace nada en absoluto a la colección. – Masiar
Ok, resolví el problema. La entrada 'err' de la función de devolución de llamada dio algo ahora que actualizo mi versión de Mongoose. Descubrí que '$ dec' no existe, por lo tanto, para disminuir, tengo que ingresar una cantidad negativa (' {$ inc: {inStock: -1}} '). Gracias por intentarlo, ¡ayudó mucho! – Masiar
¿sabes cómo "** inStock **" como parámetro? –