如何在mongo中批量更新或插入文档

时间:2018-06-21 19:20:21

标签: mongodb mongodb-.net-driver

我有BsonDocument的列表。除其他属性外,每个文档还具有两个属性NameType。如果存在具有相同NameType的文档,我想更新所有属性,否则插入新文档。

我知道我必须使用IsUpsert为真,并且由于我想更新所有我正在使用Replace方法的属性

    public async Task Save(IEnumerable<BsonDocument list)
    {            
        var updateOptions = new UpdateOptions()
        {
            IsUpsert = true
        };

        var filterBuilder = Builders<BsonDocument>.Filter;
        foreach (var doc in list)
        {
            var filter = filterBuilder.Eq<string>("Name", doc["Name"].AsString) & filterBuilder.Eq<string>("Type", doc["Type"].AsString);
            await myCollection.ReplaceOneAsync(filter, doc, updateOptions);
        }
    }

上面的代码一步一步地进行操作。我想知道是否有一种方法可以批量进行?我注意到有UpdateManyAsync,但我不知道语法。与该问题相关的SO帖子中的大多数帖子都有硬编码的过滤器值,在我的情况下不起作用

0 个答案:

没有答案