据我所知,这两个操作都可以更新多个文档。那么,它们之间有什么区别?
这里引用了 API 文档
将多个 insertOne、updateOne、updateMany、replaceOne、deleteOne 和/或 deleteMany 操作一次性发送到 MongoDB 服务器 以执行。与独立地发送多个操作(例如使用 create())相比,这样做更快,因为使用 bulkWrite() 只需要与 MongoDB 进行一次往返。
Mongoose 将对您提供的所有操作进行类型强制转换。
此函数不会触发任何中间件,包括 save() 和 update()。如果您需要针对每个文档触发 save() 中间件,请改用 create()。
与 update() 相同,但 MongoDB 将更新与 filter 匹配的所有文档(而不仅仅是第一个),无论 multi 选项的值如何。
请注意,updateMany 不会触发 update 中间件。请改用 pre('updateMany') 和 post('updateMany')。
(强调是我的)
请参阅相应文档中提供的使用示例。
BulkWrite
中,您可以同时执行其他 CRUD 操作,而在UpdateMany
中,您只能执行更新操作。 - Richa Bhuwania