Как взять 1000 элементов из динамической таблицы, отредактировать, а затем обновить их? - PullRequest
0 голосов
/ 24 сентября 2018

Я только начинаю работать с MongoDB, но мне это пока нравится.

Теперь мне нужно просмотреть большую таблицу данных и обработать записи в пакетном режиме, пометив их как обработанные, если все прошло хорошо.

Я могу собирать данные следующим образом:

        var Client = new MongoClient();
        var DB = Client.GetDatabase("test");
        var collection = DB.GetCollection<Sample>("sample");
        var filter = Builders<Sample>.Filter.Eq(b => b.NeedsProcessing, true);
        var items = collection.Find(filter).Limit(1000);

Я бегу по элементам в коллекции и, предполагая, что все в порядке, мне нужно пометить элементы как обработанные.Есть ли способ очистить флаг NeedsProcessing для всех этих элементов, кроме отдельного запроса на обновление для каждого из них на основе идентификатора?Я предполагаю, что не могу просто обновить первую 1000 снова, поскольку список, возможно, уже изменился.

1 Ответ

0 голосов
/ 24 сентября 2018

Я нашел один способ сделать это:

            var update = Builders<Datablob>.Update.Set(b => b.NeedsUploading, false);
            var ids = itemsEn.AsQueryable().Select(i => i.ID);
            var updateFilter = Builders<Datablob>.Filter.In(i => i.ID, ids);

            collection.UpdateMany(updateFilter, update);

Хотя все еще чувствует себя немного противно.Есть ли встроенный способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...