python查询MongoDB数据库中重复数据的标题和数量以及删除重复项只保留最新一个
from urllib.parse import quote_plus
import pymongo
connection_string = "mongodb://localhost:27017"
client = pymongo.MongoClient(connection_string)
db = client['spider']
collection = db['analyzed_books']
# 定义聚合管道,找出每个重复组中需要保留的最后一个文档的_id
pipeline = [
{"$sort": {"_id": -1}}, # 按照_id降序排序,假设_id是自增的,这样最新的文档会在前面
{"$group": {
"_id": "$ocr_content",
"last_doc_id": {"$first": "$_id"} # 在每个分组中选择第一个文档的_id,即最新的文档的_id
}},
{"$match": {"last_doc_id": {"$ne": None}}} # 筛选出有last_doc_id的分组
]
# 执行聚合查询,获取需要保留的文档的_id列表
results = collection.aggregate(pipeline)
ids_to_keep = [result['last_doc_id'] for result in results]
# 删除不在ids_to_keep中的文档
collection.delete_many({"_id": {"$nin": ids_to_keep}})
print("重复数据已删除,只保留了每个重复组中的最后一个文档。")
本文作者:布都御魂
本文链接:https://www.cnblogs.com/wolvies/p/18544184
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-11-13 去除内容中的多余br标签
2023-11-13 取标签列表的最后两位,并去除最后一个逗号,没有标签就用标题
2023-11-13 把列表换成JSON格式,并根据键取值
2023-11-13 去除列表里的空格