一个Mongo查询中的多个过滤器和更新

时间:2017-10-23 21:14:12

标签: c# mongodb

我正在使用mongodb驱动程序在C#中构建一个方法,我需要在其中更新多个文档。诀窍是,对于某些文档,我想从数组属性中删除一个值,而在其他文档中,我想添加该值,如果它不存在于同一个数组属性中。我知道我可以构建两个单独的过滤器定义和更新定义,然后两次调用UpdateMany。有没有办法组合这两组过滤器并更新定义并立即执行它们?每个过滤器定义都是从唯一的文档列表构建的。请注意下面的代码段。我的目标是尽可能将添加和删除更新结合起来。

var removePermRecords = updatePermissions.Where(x => x.IsAuthorized == false).Select(x => x.Id);
var filterRemove = Builders<Record>.Filter.In(x => x.Id, removePermRecords);
var updateRemove = Builders<Record>.Update.Pull("userIds", userId);
var removeUpdateResult = MongoContext.UpdateMany(filterRemove, updateRemove);

var addPermRecords = updatePermissions.Where(x => x.IsAuthorized == true).Select(x => x.Id);
var filterAdd = Builders<Record>.Filter.In(x => x.Id, addPermRecords)
var updateAdd = Builders<Record>.Update.AddToSet("userIds", userId);
var addUpdateResult = MongoContext.UpdateMany(filterAdd, updateAdd);

0 个答案:

没有答案