Обновление элемента во всех документах в коллекции MongoDB - PullRequest
5 голосов
/ 26 декабря 2011

Я выполняю следующий запрос с целью обновления одного элемента во всех существующих документах в коллекции. Я в основном пытаюсь очистить их значение до «0».

Вот код:

MongoCollection collection = db.GetCollection(DataAccessConfiguration.Settings.CollectionName);
var query = Query.Exists("ElementName", true);
var update = Update.Set("ElementName", "0");
collection.Update(query, update);

Обновляет только один документ.

Как я могу обновить всех элементов одновременно?

1 Ответ

6 голосов
/ 26 декабря 2011

Обновления в MongoDB влияют на 0 или 1 документ по умолчанию (только 0, если спецификатор запроса ничего не соответствует).Чтобы обновить все документы, вам нужно передать UpdateFlags.Multi в качестве третьего аргумента Update.Существует также версия Update с четырьмя аргументами, которая принимает флаг «безопасного режима» в качестве четвертого аргумента.

(Безопасный режим связывает команду getLastError с обновлением и заставляет драйвер ждатьпока сервер не подтвердит, что запись прошла успешно. Существуют различные варианты безопасного режима, которые будут ожидать подтверждения от нескольких серверов, если вы используете набор реплик, которые будут ждать только определенный период времени, а затем возвращаться с ошибкой,и т.д.).

Также обязательно см. документацию к драйверу C # для получения подробной информации об API.

...