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");
我正在尝试根据用户的两个输入找到一份 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");