在当前(3.8.x)版本中,Model.visits。$ inc()(Mongoose 2.7.x)的等价物是什么?

时间:2014-10-10 05:29:46

标签: node.js mongodb express mongoose

来自2.7.x的Mongooose ODB文档说明以下内容有效:

Model.findOne({ name: 'borne' }, function (err, doc){
  doc.name = 'jason borne';
  doc.visits.$inc();
  doc.save();
});

这取自版本2.7.x的mongoosejs.com(页面底部)。我现在正在学习Node.js并使用Mongoose,而上述似乎并不起作用。

我有一个架构,我有一个mongoose字段设置为:

visits : Number

并且默认情况下我在一个对象上设置 visits = 0;

当我尝试类似的事情时:

Model.findOne({'email' : req.query.email}, function(error, mdl) {
    mdl.visits.$inc();
    mdl.save();
}

我在控制台中收到以下错误:

TypeError:对象0没有方法' $ inc'

有什么建议吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这些号码扩展导致了Mongoose 3.x中的问题和have been removed

最好由具有update运算符的原子$inc处理:

Model.update(
    {email: req.query.email},
    {$inc: {visits: 1}},
    function(error, numAffected) { ... }
);