pymongo根据dataname、datacity、datacreditCode删除重复数据
以下是一个示例代码,可以根据data中的name、city和creditCode字段来删除重复数据:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
collection = db["mycollection"]
# 创建一个唯一索引,确保没有重复数据
collection.create_index([("name", pymongo.ASCENDING), ("city", pymongo.ASCENDING), ("creditCode", pymongo.ASCENDING)], unique=True)
# 删除重复数据
result = collection.aggregate([
{"$group": {"_id": {"name": "$name", "city": "$city", "creditCode": "$creditCode"}, "dups": {"$push": "$_id"}, "count": {"$sum": 1}}},
{"$match": {"count": {"$gt": 1}}}
])
for r in result:
# 保留第一个文档,删除其他文档
keep_id = r['dups'][0]
delete_ids = r['dups'][1:]
collection.delete_many({'_id': {'$in': delete_ids}})
此代码创建了一个唯一索引来确保没有重复数据,然后使用聚合查询来查找重复数据。对于每个重复组,它保留第一个文档,并删除其他文档
原文地址: https://www.cveoy.top/t/topic/grM7 著作权归作者所有。请勿转载和采集!