Delete/pull 一个文档基于多个条件

Delete/pull one document based on multiple conditions

我正在尝试根据用户的两个输入找到一份 MongoDB 文档。这是我的例子:

public async Task RemoveAdminRole(string userId, string groupId) { 
    var idFilter = Builders<Group>.Filter.Eq(group => group._id, groupId);
    var roleFilter = Builders<Group>.Update.PullFilter(group => group.Roles, role => role.UserId == userId);
    var roleFilter2 = Builders<Group>.Update.PullFilter(group => group.Roles, role => role.Role == "ADMIN");

    var update = roleFilter & roleFilter2;

    await this.DataContext.MongoCollection.UpdateOneAsync(idFilter, update);
}

基本上我想在那里做的是 remove/pull Group 内的元素 "Roles",它具有 role.Role == "ADMIN"role.UserId == userId。我收到一个错误:

Operator '&' cannot be applied to operands of type 'UpdateDefinition<Group>' and 'UpdateDefinition<Group>'

我如何创建多个这样的 PullFilter(或类似的)以便我可以根据我的两个输入删除特定元素?

您可以按如下方式添加第二个:

var roleFilter = Builders<Group>.Update
    .PullFilter(group => group.Roles, role => role.UserId == userId)
    .PullFilter(group => group.Roles, role => role.Role == "ADMIN");