如何在Mongoose中使用Document#更新?
我在这里查看Mongoose中Document#update的示例:
http://mongoosejs.com/docs/api.html#document_Document-update
方法签名:
文档#更新(文档,选项,回调)
示例代码:
weirdCar.update({$ inc:{wheels:1}},{w:1},callback);
文档说第一个参数应该是“doc”,但是doc究竟是什么? 我会想象文档应该只是一个对象,将键映射到要更新的新值(默认情况下使用$ set)。 在代码示例中,他们试图将轮子加1。
然后,在示例中,它们将{w:1}作为选项传递,但根据Model.Update,“w”不是有效的选项。 唯一有效的选项应该是:安全,插入,多重,严格。
http://mongoosejs.com/docs/api.html#model_Model.update
有人可以解释由Mongoose提供的示例代码吗?
Mongoose API基于底层的MongoDB查询结构。 在这种情况下,“doc”是指匹配您想要更新的某些文档的标准。 MongoDB文档非常清楚地解释了这一点:http://docs.mongodb.org/manual/core/write-operations/#update
所以,假设你有一个'汽车'系列,并且你想找到所有有三个车轮的文件(所有车型),并增加这个值,这样这些车辆就有四个车轮。 在这种情况下,“doc”是{wheels:3},它返回集合中的所有三轮车。 以下是MongoDB shell中的基本查询:
> db.cars.update( { wheels : 3 }, { $inc : { wheels : 1 } } ); 
在Mongoose中,你可以为选项和回调函数添加额外的参数,但这是基本的想法。
  对我来说关键是正确的参数。  您需要提供callback参数或调用结果中的.exec()以使其.exec() 。 
var Product = mongoose.model('product', mongoose.Schema({
    name: String
}));
Product.findById('539dceccc61fa4950b43423a', function (err, product) {
    product.update({ name: 'test' }, null, function(err, numberAffected, raw) { });
    //or
    product.update({ name: 'test' }).exec();
});
在我看来,这些文档是错误的。
  此外,有些人在这里不了解这个问题。  我们正在尝试致电一个DOCUMENT的update 。  在执行更新时不要查询文档。  有一个区别,并且它不是很好的被猫鼬记录。 
  以下是文档所述内容:关于document.update 
  例如: weirdCar.update({$inc: {wheels:1}}, { w: 1 }, callback); 
  参数: doc <Object> options <Object> callback <Function> 
  有效选项 same as in Model.update 
所以让我们看看Model.updates选项...
Model.updates选项:
  没有什么与那个例子相对应...... {w : 1}在这里是错误的。  忽略那部分。 
但是,您可以在有或没有这些选项的情况下使用它。
  所以它看起来像没有任何选择 
 weirdCar.update({$inc: {wheels:1}}, function(err, updated) { // 'updated' is the object: {ok: number, nModified: number, n: number} }) 
上一篇: How to use Document#update in Mongoose?
下一篇: in mongoose, how to select the fields in a array property
