2016-12-12 1 views
0

J'essaie de trouver un document MongoDB basé sur deux entrées de l'utilisateur. Voici mon exemple:Supprimer/tirer un document en fonction de plusieurs conditions

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

Fondamentalement, ce que je veux faire là-bas, est enlever/retirer l'élément « rôles » à l'intérieur Group qui a role.Role == "ADMIN" et role.UserId == userId. Je reçois une erreur:

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

Comment pourrais-je créer plusieurs de ces PullFilter (ou similaire) pour que je puisse retirer l'élément spécifique en fonction de mes deux entrées?

Répondre

2

Vous pouvez ajouter le second comme suit:

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

Bon sang, je ne savais même pas que vous pourriez faire. Merci! Sur une autre note, avez-vous déjà eu un compte sur un forum appelé HF? Juste curieux. – MortenMoulder

+0

Non, ceci est mon seul compte. – Mahdi

+0

Très bien, je connaissais un gars de ce nom. Merci pour l'aide! :) – MortenMoulder