I'm trying to find one MongoDB document based on two inputs from the user. Here's my example:
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);
}
Basically what I want to do there, is remove/pull the element "Roles" inside Group
that has role.Role == "ADMIN"
and role.UserId == userId
. I'm getting an error:
Operator '&' cannot be applied to operands of type 'UpdateDefinition<Group>' and 'UpdateDefinition<Group>'
How would I create multiple of these PullFilter
(or similar) so I can remove the specific element based on my two inputs?
You can add the second one like follows:
var roleFilter = Builders<Group>.Update
.PullFilter(group => group.Roles, role => role.UserId == userId)
.PullFilter(group => group.Roles, role => role.Role == "ADMIN");