一次查询中删除多个MongoDB文档

3

我想尝试使用MongoDB,并创建了一个演示控制台应用程序。我想要删除一批文档。目前,我正在使用循环一个一个地删除。我的问题是:如何使用一个查询删除所有文档?

我有一个要删除的Bson文档列表,存储在C#列表中。这是我的当前查询。

IMongoClient _Client1 = new MongoClient("mongodb://10.80.3.199:27017");
IMongoDatabase _Database1 = _Client1.GetDatabase("EventManagement-02");
IMongoCollection<BsonDocument> collection = _Database1.GetCollection<BsonDocument>("TestResults");
try
{
    List<BsonDocument> insCollection = new List<BsonDocument>();
    for (int i = 0; i < inserted.Count; i++)
    {
        var filter = Builders<BsonDocument>.Filter.Eq("_id", inserted[i].Id);
        await collection.DeleteManyAsync(filter);
    }
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
1个回答

5
您可以像这样简单地编写代码(不需要循环):
var filter = Builders<BsonDocument>.Filter.In("_id", inserted.Select(i => i.Id));
await collection.DeleteManyAsync(filter);

是的,当我在一个查询中删除30万个文档时,它的工作速度非常快。 - Pradeep Asanka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接