如何从动态表格中提取1000个项目,进行编辑然后更新?

时间:2018-09-24 11:27:54

标签: c# mongodb

我刚开始使用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标志,而无需根据id对每个项目进行单独的更新查询?我认为我不能再更新前1000个,因为列表现在可能已经更改。

1 个答案:

答案 0 :(得分:0)

我找到了一种方法:

            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);

不过,还是有点讨厌。有内置的方法吗?