我正在寻找一种方法来更新许多文件一次使用mongoose和返回所有修改后的文件.我试着把update()分打multi:true分.它正在更新所有匹配的文档,但不返回任何文档.然后我试着用findOneAndUpdate().它只更新并返回一个文档,即使有许多匹配的文档.是的,函数名本身告诉我们,它只会更新一个,但我还是try 了.我无法将选项设置为findOneAndUpdate()中的multi:true.怎么做呢?提前谢谢

推荐答案

目前,我认为在MongoDB中不可能更新多个文档并在同一个查询中返回所有更新的文档.

在mongoose 中,findOneAndUpdate()是基于MongoDB的原生findAndModify()方法.

如果你查看findAndModify()方法的官方documentation,它会说-

findAndModify命令修改并返回单个文档.

尽管查询可能匹配多个文档,但findAndModify只会 Select 一个文档进行修改.

因此,不能使用findAndModify更新多个文档.

另一方面,update()updateMany()方法用multi标志更新许多文档,但它只返回WriteResult,如下所示-

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

Mongodb相关问答推荐

MongoDB中的数据类型没有通过数据库Pyspark更改(从字符串到日期)

我无法将文档发送到我的MongoDB集合,因为它告诉我使文档无效

为什么这个查询可以在MongoDB中使用?

mongoose正在抛出Schema的错误has';t已在next.js中注册

MongoDB聚合 - 用另一个数组过滤数组

mongodb中集合的最大大小是多少

mongoose如何在幕后工作

什么 Javascript 库可以针对对象判断类似 MongoDB 的查询谓词?

pymongo 排序和 find_one 问题

使用 Node.js 和 mongodb 处理超时

.NET 中的 Mongodb 单元测试

在 mongodb 中查找字段的所有非不同值

MongoDB聚合排序不起作用

有没有办法将python对象直接存储在mongoDB中而不序列化它们

Node + Mongoose:获取最后插入的 ID?

如何使用 MongoDB 和 Mongoid 在 Rails 3 上进行适当的数据库测试 (TDD)

当前的 URL 字符串解析器已弃用

是否有支持 MongoDB 和 Devise 的 Rails 管理界面?

多次使用位置 `$` 运算符来更新嵌套数组

判断字段是否存在于数组的子文档中