猿教程 Logo

.Net连接MongoDb:使用MongoDb驱动执行删除

介绍

在上一篇文章中,我们讨论了如何通过MongoDb .NET驱动程序执行更新。 更新操作可以分为替换和“真”更新。 替换是将现有文档替换为另一个,只有_id字段保持不变。 真正的更新真的是我们通常认为更新应该如何发生,即只有匹配文档中的特定属性被覆盖。 两种更新类型都由驱动程序中的多个方法表示,例如UpdateOne或FindOneAndReplace或UpdateMany。

在这篇文章中,我们将关闭CRUD圈,并查看驱动程序中的删除。 毕竟,我们已经了解过滤器定义和选项,通过删除将变得轻而易举。

删除

可以通过类似于更新的许多功能来执行删除。 以下是与删除相关的当前可用功能的列表。 您可以根据我们所看到的更新来跟踪他们的目标。

  • DeleteOne与过滤器定义

  • 具有用于过滤器的LINQ表达式的DeleteOne扩展方法

  • DeleteMany具有过滤器定义

  • 使用LINQ过滤器删除多个扩展名

  • FindOneAndDelete:一个原子操作来查找单个文档并将其删除,类似于FindOneAndUpdate

  • 所有上述都具有异步对等方式,如DeleteManyAsync和FindOneAndDeleteAsync

Delete *方法都返回一个DeleteResult,而FindOneAndDelete返回被删除的文档或者没有被删除的文件。

我们使用具有过滤器定义的DeleteOne,通过名称删除其中一个虚拟餐馆:

ModelContext modelContext = ModelContext.Create(new ConfigFileConfigurationRepository(), new AppConfigConnectionStringRepository());
DeleteResult deleteResult = modelContext.Restaurants.DeleteOne(Builders<RestaurantDb>.Filter.Eq(r => r.Name, "BrandNewMexicanKing"));
Console.WriteLine(deleteResult.DeletedCount);

我们已经看到过滤器定义构建器在很多次,所以我不会再次通过它。 DeleteResult公开了显示存储已删除文档数的DeletedCount属性。 在上面的例子中,它将是一个,并且DeleteOne当然只能是0或1。

DeleteMany以相同的方式工作,但与查询匹配的所有文档将被删除。 你可以很容易地弄清楚它是如何使用的。

我们来看看FindOneAndDelete方法。 这里有一个例子,包括FindOneAndDeleteOptions对象:

ModelContext modelContext = ModelContext.Create(new ConfigFileConfigurationRepository(), new AppConfigConnectionStringRepository());
FindOneAndDeleteOptions<RestaurantDb, RestaurantDb> findOneAndDeleteOptions = new FindOneAndDeleteOptions<RestaurantDb, RestaurantDb>()
{
	Sort = Builders<RestaurantDb>.Sort.Descending(r => r.Id)
};
RestaurantDb deleted = modelContext.Restaurants.FindOneAndDelete(Builders<RestaurantDb>.Filter.Eq(r => r.Name, "BrandNewMexicanKing"), findOneAndDeleteOptions);
Console.WriteLine(deleted == null);

FindOneAndDeleteOptions对象公开了一个Sort属性,它与FindOneAndReplaceOptions中的目的相同,即它可以对哪个匹配的文档进行一些控制。 上述示例指定匹配的文档将按升序排序,并且该列表的顶部项目将被删除。

由于我们已经删除了名为BrandNewMexicanKing的餐厅,函数返回null,即删除== null将为True。

我们将在下一篇文章中使用一个特殊的包装器进行多次插入,更新和删除操作,称为批量写入。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CsharpMongo/20.html