用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 )的字段,其中有一个对象作为{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 }选项,这也可能导致你的问题。 我没有检查源代码来确认这可能是问题,但它可能值得一试。

链接地址: http://www.djcxy.com/p/10421.html

上一篇: Increasing one field in a MongoDB collection with Mongoose

下一篇: Android adb over Wifi install apk