文档首页 → 开发应用程序 → Python 驱动程序 → PyMongo
删除文档
概述
在本指南中,您可以学习如何使用PyMongo通过执行删除操作从MongoDB集合中删除文档。
删除操作从MongoDB集合中删除一个或多个文档。您可以使用delete_one()
或 delete_many()
方法执行删除操作。
示例数据
本指南中的示例使用来自 sample_restaurants.restaurants
集合的示例数据。Atlas 示例数据集。要了解如何创建免费的 MongoDB Atlas 集群并加载示例数据集,请参阅 PyMongo 入门教程。
删除操作
您可以通过以下方法在 MongoDB 中执行删除操作:
delete_one()
,用于删除满足搜索条件的第一个文档delete_many()
,用于删除满足搜索条件的所有文档
每个删除方法都需要一个 查询过滤器 文档,它指定了搜索条件,用于确定要删除哪些文档。有关查询过滤器的更多信息,请参阅 MongoDB 服务器手册中的 查询过滤器文档部分。
删除单个文档
以下示例使用 delete_one()
方法从 restaurants
集合中删除具有 name
值为 "Ready Penny Inn"
的文档。
query_filter = { "name": "Ready Penny Inn" } result = restaurants.delete_one(query_filter)
删除多个文档
以下示例使用 delete_many()
方法从 restaurants
集合中删除所有具有 borough
值为 "Brooklyn"
的文档。
query_filter = { "borough": "Brooklyn" } result = restaurants.delete_many(query_filter)
自定义删除操作
delete_one()
和 delete_many()
方法可以接受额外的参数,这些参数代表您可以使用来配置删除操作的可选选项。如果您不指定任何额外选项,驱动程序不会自定义删除操作。
以下代码使用delete_many()
方法删除所有包含字符串"Mongo"
的name
值的restaurants
集合中的所有文档。它还使用comment
选项为操作添加注释。
query_filter = { 'name': {'$regex': 'Mongo' }} result = restaurants.delete_many(query_filter, comment="Deleting Mongo restaurants")
提示
如果前面的示例使用的是delete_one()
方法而不是delete_many()
,驱动程序将仅删除第一个包含字符串"Mongo"
的name
值的文档。
返回值
delete_one()
和delete_many()
方法返回一个DeleteResult
类型。此类型包含以下属性
deleted_count
,表示删除的文档数量acknowledged
,表示服务器是否确认结果raw_result
,这是服务器返回的原始结果
注意
如果acknowledged
属性为False
,则在访问时,所有其他DeleteResult
属性都会引发一个InvalidOperation
异常。如果服务器未确认写操作,则驱动程序无法确定这些值。
如果查询过滤器不匹配任何文档,驱动程序不会删除任何文档,且deleted_count
为0。
API文档
要了解更多关于本指南中讨论的任何方法或类型的信息,请参阅以下API文档