如何使用 Python 和 PyMongo 删除所有在指定日期范围内的文档?

2023-04-15 00:00:00 指定 如何使用 范围内

首先,需要导入 PyMongo 库来连接 MongoDB 数据库。代码如下:

from pymongo import MongoClient

client = MongoClient()
db = client.test_database
collection = db.test_collection

假设我们的文档保存了一个“created_at”字段表示创建时间,我们需要删除所有在“2022年1月1日”到“2022年1月31日”这个时间范围内的文档。可以使用以下代码来删除这些文档:

from datetime import datetime

start_time = datetime(2022, 1, 1)
end_time = datetime(2022, 1, 31)

result = collection.delete_many({"created_at": {"$gte": start_time, "$lte": end_time}})

print("{} documents deleted".format(result.deleted_count))

在这里,我们使用了 MongoDB 的 $gte 和 $lte 操作符来指定日期范围。delete_many() 方法将所有符合条件的文档删除,并返回一个包含删除数量的对象,我们利用 deleted_count 属性打印出已删除的文档数量。

完整代码示例:

from pymongo import MongoClient
from datetime import datetime

client = MongoClient()
db = client.test_database
collection = db.test_collection

start_time = datetime(2022, 1, 1)
end_time = datetime(2022, 1, 31)

result = collection.delete_many({"created_at": {"$gte": start_time, "$lte": end_time}})

print("{} documents deleted".format(result.deleted_count))

注意:这里的日期格式必须是 datetime 类型,如果我们要使用字符串作为日期范例,需要先将字符串转换为 datetime 类型。

代码示例:

from pymongo import MongoClient
from datetime import datetime

client = MongoClient()
db = client.test_database
collection = db.test_collection

start_time_str = "2022-01-01"
end_time_str = "2022-01-31"

start_time = datetime.strptime(start_time_str, "%Y-%m-%d")
end_time = datetime.strptime(end_time_str, "%Y-%m-%d")

result = collection.delete_many({"created_at": {"$gte": start_time, "$lte": end_time}})

print("{} documents deleted".format(result.deleted_count))

相关文章