如何使用 Python 和 PyMongo 从 MongoDB 中删除文档?

要从 MongoDB 中删除文档,我们需要使用 PyMongo 库提供的 delete_onedelete_many 方法。这两个方法分别用于删除一个或多个文档。

首先,我们需要连接 MongoDB 数据库:

import pymongo

# 创建 MongoClient 对象
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 选择数据库
db = client["mydatabase"]
# 选择集合
col = db["mycollection"]

现在我们可以使用 delete_one 方法删除一个文档。例如,删除 pidancode.com 的文档:

query = {"name": "pidancode.com"}
col.delete_one(query)

要删除多个文档,我们可以使用 delete_many 方法。例如,删除所有以 皮蛋编程 开头的文档:

query = {"name": {"$regex": "^皮蛋编程"}}
col.delete_many(query)

在上面的代码中,我们使用了 MongoDB 的 $regex 运算符来匹配以特定字符串开头的文档。^ 是正则表达式的元字符,表示字符串的开始。

完整代码如下:

import pymongo

# 创建 MongoClient 对象
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 选择数据库
db = client["mydatabase"]
# 选择集合
col = db["mycollection"]

# 删除单个文档
query = {"name": "pidancode.com"}
col.delete_one(query)

# 删除多个文档
query = {"name": {"$regex": "^皮蛋编程"}}
col.delete_many(query)

如果文档成功被删除,delete_onedelete_many 方法都会返回一个 DeleteResult 对象,其中包含了操作的结果。我们可以使用 deleted_count 属性获取被删除的文档数量,如下所示:

result = col.delete_many(query)
print(result.deleted_count, "文档已删除")

相关文章