使用Mongoose增加MongoDB集合中的一个字段

时间:2012-02-05 16:58:22

标签: node.js mongoose

我正在尝试通过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)的字段,该字段的对象为{{1}形式的字段1}}。我只想增加该系列的inStock条目。在Schema我有:

{inStock : 1}

任何人都可以指出我做错了什么吗? 非常感谢。

1 个答案:

答案 0 :(得分:3)

A)确保你的Mongoose是最新的。旧版本在Model.update操作上非常错误,因为Mongoose试图推断您何时仅传递新对象,在这种情况下,它会将您的update对象转换为$set操作。

B)尝试从函数调用中删除空{}。它是可选的,通过传递一个空对象而不是实际选项,您可能会混淆Mongoose设置{ safe: false }选项,这也可能导致您的问题。我没有检查源代码以确认这可能是问题,但它可能值得一试。