更新多个文档并返回所有更新的文档

RaR*_*RaR 8 mongoose mongodb node.js

我正在寻找一种方法来一次更新许多文档使用mongoose并返回所有修改过的文档.我试着multi:trueupdate()中设置.它正在更新所有匹配的文档但不返回任何文档.然后我尝试使用findOneAndUpdate().即使有许多匹配的文档,它也只更新并返回一个文档.是的,函数名称本身告诉,它只会更新一个,我仍然尝试过.我不能像设置选项multi:truefindOneAndUpdate().怎么做到呢?提前致谢

Jyo*_*ngh 14

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

在Mongoose中,findOneAndUpdate()它基于findAndModify()MongoDB 的本机方法.

如果检查官方文件中的findAndModify()方法,其指出-

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

虽然查询可能匹配多个文档,但findAndModify将只选择一个文档进行修改.

因此,您无法使用更新多个文档findAndModify.

update()updateMany()另一方面,或者方法用multi标志更新许多文档,但它只返回看起来像这样的WriteResult -

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Run Code Online (Sandbox Code Playgroud)

  • 感谢@Jyotman的澄清。然后,我将进行两个不同的查询。 (2认同)
  • 当心。您将失去原子性,并且可能会丢失数据。如果在“查找”之后“删除”之前添加了新文档怎么办?这份新文件将永远消失在虚空中...... (2认同)