2016-12-12 1 views
0

사용자의 두 입력을 기반으로 한 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); 
} 

기본적으로, role.Role == "ADMIN"role.UserId == userId을 가지고 Group 내부의 요소 "역할"을 당겨/제거 무엇인지 내가 거기 싶지. 나는 오류 받고 있어요 :

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

가 어떻게 이러한 PullFilter (또는 유사)의 복수를 만들 것을 그래서 난 내 두 개의 입력에 따라 특정 요소를 제거 할 수 있습니까? 당신은 두 번째 등을 추가 할 수 있습니다

답변

2

은 다음과 같습니다

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

젠장, 나는 심지어 그냥 할 수 몰랐다. 감사! 또 다른 메모에서 HF라는 포럼에 대한 계정을 갖고 있습니까? 그냥 궁금해서. – MortenMoulder

+0

아니, 내 유일한 계정입니다. – Mahdi

+0

좋아, 그냥 그 이름으로 남자를 알았어. 도와 주셔서 감사합니다! :) – MortenMoulder