2017-02-15 4 views
2

Я ищу способ обновить сразу несколько документов с помощью mongoose и вернуть все измененные документы. Я попытался установить multi:true в update(). Он обновляет все соответствующие документы, но не возвращает их. Затем я попробовал с findOneAndUpdate(). Он обновляет и возвращает только один документ, даже если есть много подходящих. Да, само имя функции говорит, оно будет обновлять только одно, но я пробовал. Я не мог установить такой вариант, как multi:true в findOneAndUpdate(). Как это можно сделать? Заранее спасибоОбновите несколько документов и верните все обновленные документы

ответ

2

В настоящее время я не думаю, что его возможно в MongoDB обновить несколько документов и вернуть все обновленные документы в том же запросе.

В Mongoose findOneAndUpdate() основан на родном findAndModify() методе MongoDB.

Если вы проверите OFFICAL documentation метода findAndModify(), его состояния, -

Команда модифицирует findAndModify и возвращает один документ.

Хотя запрос может совпадать с несколькими документами, findAndModify будет выбирать только один документ для изменения.

Следовательно, вы не можете обновлять несколько документов, используя findAndModify.

update() или updateMany() метод с другой стороны, обновляет множество документов с multi флагом, но он возвращает только WriteResult, который выглядит, как это -

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

Благодаря @Jyotman разъяснений. Тогда я пойду на два разных вопроса. – RaR

 Смежные вопросы

  • Нет связанных вопросов^_^