我正在构建一个MongoDB数据库,问题是我想避免重复的条目。目前我正在执行此操作(仅在检查条目是否不存在后才插入文档):from pymongo import Connection
import pandas as pd
from time import strftime
from collections import OrderedDict
connection = Connection()
db = connection.mydb
collection = db.mycollection
data = pd.read_csv("data/myfile.csv", parse_dates=[2,5])
for i in range(len(data)):
if(collection.find({ "id": data.ix[0], \
"date1": data.ix[i, 2].strftime("%Y-%m-%d"), \
"date2": data.ix[i, 5].strftime("%Y-%m-%d"), \
"number": int(data.ix[i, 6]), \
"type": data.ix[i, 7]}).count() == 0):
collection.insert(here goes what I'd like to insert)
这确实很好,但这已经存在严重的性能问题(只有大约100Mb的数据),因为每次执行find()操作似乎会显著降低速度。在
有没有办法加快速度?也许我根本就错了?
我只需要避免在某些字段上重复,而不是所有字段(也就是说,还有“number2”,它可以不同,但如果所有其他字段都匹配,我仍然希望它是重复的)。在