用Mongoose增加MongoDB集合中的一个字段
我试图通过Mongoose在我的MongoDB数据库集合中增加一个值。 这是在Mongoose网站上显示的演示代码:
var conditions = { name: 'borne' } , update = { $inc: { visits: 1 }} , options = { multi: true }; Model.update(conditions, update, options, callback)
我有这样的东西:
var conditions = { "uniqueId" : itemId }; var update; if(increase) update = {$inc : {inStock : 1}}; else update = {$dec : {inStock : 1}}; Item.update(conditions, update, {}, callback);
正如你所看到的,与Mongoose的网站代码没有太大的区别。
问题是,当这段代码被执行时,我最终在我的集合中有一个名为$dec
(或$inc
)的字段,该字段的forms为{inStock : 1}
。 我只是想增加收集的inStock条目。 在Schema中我有:
var ItemToSell = new Schema({ uniqueId : { type: Number, index: true } , name : String , type : String , inStock : Number });
任何人都可以指出我做错了什么? 非常感谢。
A)确保你是Mongoose是最新的。 旧版本在Model.update
操作上非常Model.update
因为Mongoose试图推断何时只是传递一个新对象,在这种情况下它会将你的update
对象变成一个$set
操作。
B)尝试从您的函数调用中删除空的{}
。 这是可选的,通过传递一个空对象而不是实际的选项,你可能会混淆Mongoose设置{ safe: false }
选项,这也可能导致你的问题。 我没有检查源代码,以确认这可能是问题,但它可能值得一试。