You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用MongoDB .Net Driver实现多文档数组指定元素批量移除?

C# MongoDB.Driver 对应实现代码

你需要先安装MongoDB.Driver NuGet包,再引用对应命名空间:

using MongoDB.Driver;
// 用BsonDocument写法需额外引用:
using MongoDB.Bson;

写法1:强类型实体写法(推荐,有编译校验)

如果你预先定义了stores集合对应的实体类,示例如下:

public class Store
{
    public ObjectId Id { get; set; }
    public List<string> Fruits { get; set; }
    // 其他业务字段
}

对应更新逻辑:

// 1. 获取stores集合的操作实例,mongoDatabase为你初始化好的IMongoDatabase实例
var storeCollection = mongoDatabase.GetCollection<Store>("stores");

// 2. 构造更新规则:从Fruits数组中移除值为apples、bananas的元素
var updateRule = Builders<Store>.Update.PullFilter(
    store => store.Fruits,
    fruit => fruit.In("apples", "bananas")
);

// 3. 执行批量更新,空过滤条件匹配所有文档
var updateResult = await storeCollection.UpdateManyAsync(
    FilterDefinition<Store>.Empty,
    updateRule
);

写法2:BsonDocument松散写法(无需定义实体类)

如果你没有定义对应实体类,可直接用BsonDocument操作:

// 1. 获取stores集合的操作实例
var storeCollection = mongoDatabase.GetCollection<BsonDocument>("stores");

// 2. 构造更新规则
var updateRule = Builders<BsonDocument>.Update.PullFilter(
    "fruits",
    Builders<BsonDocument>.Filter.In(string.Empty, new []{"apples", "bananas"})
);

// 3. 执行批量更新
var updateResult = await storeCollection.UpdateManyAsync(
    FilterDefinition<BsonDocument>.Empty,
    updateRule
);

你可以通过updateResult.ModifiedCount查看实际修改的文档条数,上述两种写法的逻辑和你提供的原生MongoDB语句完全等价。

内容的提问来源于stack exchange,提问作者Drilon Ahmetaj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:18:00