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)
find()
これは問題なく動作しますが、毎回実行すると大幅に速度が低下するように見えるため、これにはすでに重大なパフォーマンスの問題があります (わずか 100Mb のデータ) 。
物事をスピードアップする方法はありますか?多分私はそれを根本的に間違っていますか?すべてではなく、特定のフィールド セットでのみ重複を避ける必要があります (つまり、「number2」もありますが、これは異なる可能性がありますが、他のすべてのフィールドが一致する場合は重複したいと考えています)。