我有一个mongoDB集合,其中包含超过500万条记录。从那我需要删除重复的条目。这是我尝试过的代码,
from pymongo import MongoClient
conn=MongoClient("mongodb://127.0.0.1:27017")
db=conn.test
cursor=db.coll.aggregate(
[
{"$group": {"_id":{"Instrument Name":"$Instrument Name","High":"$High","Low":"$Low","V":"$V","Date":"$Date","Close":"$Close","Open":"$Open"}, "unique_ids": {"$addToSet": "$_id"}, "count": {"$sum": 1}}}
],
{
'allowDiskUse': 'true'
}
)
response = []
for doc in cursor:
del doc["unique_ids"][0]
for id in doc["unique_ids"]:
response.append(id)
db.coll.remove({"_id": {"$in": response}})
但是当我尝试执行此代码时,出现了类似的错误,
追溯(最近一次呼叫最近):文件“ delete_duplicate.py”,“ allowDiskUse”中的第12行:“ true” TypeError:aggregate()恰好接受2个参数(给定3个)
当我在没有allowDiskuse的小型数据集中运行代码时,它会成功删除重复项。但是当我尝试在大型数据集中运行时,会抛出类似我需要使用allowdiskuse的错误,如果我也使用过gegeet上面提到的错误我正在使用MongoDB 3.0版本。因此,请确保我的平台无法正常使用。因此,请任何人帮助我解决此问题。
cursor = [{
"$group": {
"_id": {
"Instrument Name": "$Instrument Name",
"High": "$High",
"Low": "$Low",
"V": "$V",
"Date": "$Date",
"Close": "$Close",
"Open": "$Open"
},
"unique_ids": {
"$addToSet": "$_id"
},
"count": {
"$sum": 1
}
}
}]
然后打电话
result = coll.aggregate(cursor, allowDiskUse=True)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句