Я ищу способ обновить сразу несколько документов с помощью mongoose
и вернуть все измененные документы. Я попытался установить multi:true
в update(). Он обновляет все соответствующие документы, но не возвращает их. Затем я попробовал с findOneAndUpdate(). Он обновляет и возвращает только один документ, даже если есть много подходящих. Да, само имя функции говорит, оно будет обновлять только одно, но я пробовал. Я не мог установить такой вариант, как multi:true
в findOneAndUpdate()
. Как это можно сделать? Заранее спасибоОбновите несколько документов и верните все обновленные документы
2
A
ответ
2
В настоящее время я не думаю, что его возможно в MongoDB обновить несколько документов и вернуть все обновленные документы в том же запросе.
В Mongoose findOneAndUpdate()
основан на родном findAndModify()
методе MongoDB.
Если вы проверите OFFICAL documentation метода findAndModify()
, его состояния, -
Команда модифицирует findAndModify и возвращает один документ.
Хотя запрос может совпадать с несколькими документами, findAndModify будет выбирать только один документ для изменения.
Следовательно, вы не можете обновлять несколько документов, используя findAndModify
.
update()
или updateMany()
метод с другой стороны, обновляет множество документов с multi
флагом, но он возвращает только WriteResult, который выглядит, как это -
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
Благодаря @Jyotman разъяснений. Тогда я пойду на два разных вопроса. – RaR