在使用 Node.js 并构建 MongoDB 应用程序时,Mongoose 是一个广泛使用的 ODM(对象文档映射)库。其中,两个常见的方法是 .save()
和 update()
。但是,这两种方法之间有什么区别呢?
.save() 方法
.save()
方法是将新的文档保存到数据库中或更新现有文档的简单方法。以下是一个例子:
----- ---- - ---------------------- - ----- ------ --- ----- ---- - --- ------ ----- ----- ---- --- --------------- ---------- -- - -- ----- ------ ------------------- ----------------------- -- - ---- ------------------------- ----- ----- ----- ---- - - ---
但是,如果您打算更新现有文档,您需要首先检索该文档并对其进行更改,然后再调用 .save()
方法。
-------------- ----- ----- ---- -- ----- ----- -- - -- ----- ------ ------------------- --------- - ----- ----- --------------- ------------ -- - -- ----- ------ ------------------- ------------------------- -- - ---- ------------------------- ----- ----- ----- ---- - - --- ---
请注意,这里使用了回调函数来处理错误和结果。在实际应用中,您可能希望使用 Promise 或 async/await 更好地处理这些操作。但是,在这个例子中,我们将保持简单。
update() 方法
.update()
方法允许您在一次查询中更新多个文档。以下是一个例子:
------------- ----- ----- ---- -- - ----- ----- ---- -- ----- ---- -- - -- ----- ------ ------------------- ----------------- -- - -- -- ---------- -- --- - - ---
这里,我们将所有名字为“John Doe”的用户的名称更改为“Jane Doe”。请注意,您需要传递两个参数作为筛选器和要执行的更改。此外,该方法仅返回有关执行操作的少量信息。
如果希望获得更新的实际文档,请改用新的 .findOneAndUpdate()
或 .updateOne()
等方法(因为 .update()
已被废弃):
----------------------- ----- ----- ---- -- - ----- ----- ---- -- - ---- ---- -- ----- ------------ -- - -- ----- ------ ------------------- ------------------------- -- - ---- ------------------------- ----- ----- ----- ---- - - ---
在这个例子中,我们使用了 .findOneAndUpdate()
方法,并将 new
选项设置为 true
,以便返回实际更新后的文档。
区别
.save()
方法用于保存新文档或更新现有文档。.update()
方法仅在查询结果中更改多个文档,只返回有关操作执行情况的少量信息。- 当您需要更新单个文档时,应使用
.findOneAndUpdate()
或.updateOne()
等方法。
结论
在本文中,我们已经介绍了 Mongoose 中两种常见的方法:.save()
和 update()
。虽然它们都可以用于更新文档,但它们之间存在一些区别。.save()
方法用于保存新文档或更新现有文档。.update()
方法用于在查询结果中更改多个文档,并只返回有关操作执行情况的少量信息。当您需要更新单个文档时,应使用 .findOneAndUpdate()
或 .updateOne()
等方法。
尽管这些方法是相
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/30902