如何在猫鼬中使用 Document#update?

Kev*_* Wu 5 mongoose mongodb

我正在查看 Mongoose 中 Document#update 的示例:

http://mongoosejs.com/docs/api.html#document_Document-update

方法签名:

文档#更新(文档,选项,回调)

示例代码:

奇怪的汽车.更新({$inc: {wheels:1}}, { w: 1 }, 回调);

文档说第一个参数应该是“doc”,但究竟什么是 doc?我想 doc 应该只是一个将键映射到要更新的新值的对象(默认情况下使用 $set )。在代码示例中,他们试图将轮子增加 1。

然后在示例中,他们将 {w : 1} 作为选项传递,但根据 Model.Update,“w”不是有效选项。唯一有效的选项应该是:safe、upsert、multi、strict。

http://mongoosejs.com/docs/api.html#model_Model.update

有人可以解释一下 Mongoose 提供的示例代码吗?

sfr*_*ter 1

Mongoose api 基于底层 MongoDB 查询结构。在本例中,“doc”是指匹配您要更新的某些文档的条件。MongoDB 文档对此解释得非常清楚: http://docs.mongodb.org/manual/core/write-operations/#update

因此,假设您有一个“汽车”集合,并且您想要查找具有 3 个轮子的所有文档(所有汽车),并增加该值,以便这些汽车具有 4 个轮子。在本例中,“doc”是 {wheels:3},它返回集合中的所有三轮汽车。以下是 MongoDB shell 中的基本查询:

> db.cars.update( { wheels : 3 }, { $inc : { wheels : 1 } } ); 
Run Code Online (Sandbox Code Playgroud)

在 Mongoose 中,您可以为选项和回调函数添加额外的参数,但这是基本思想。