これが私の問題です。単語とそれが発生する回数があるmongodbでコレクションを作成したいと思います。私はPythonでそれをやっていて、それは非常に遅いです。これはおそらく、私が持っているすべての単語について、それがすでにデータベースにあるかどうかを確認し(* find_one *を使用)、ある場合はその頻度を取得し、増分して保存します(updateを使用)。そこにない場合は、リストに追加して定期的に一括挿入します。
これを行うためのより良い方法はありますか?単語の数は膨大です(異なる言語が可能です)。そもそもmongoDBは正しいものですか?インストールが非常に簡単で、チュートリアルを10分で取得したため、mongoDBを選択しました...
編集-コードも追加しました。私が大きいと言うとき、私はそれらの中に単語が含まれている約4GBの大きいファイルを意味します...
insertlist = []
def copy_to_db(word):
global insertlist
wordCollection = db['words']
occurrence = wordCollection.find_one({'word' : word})
if occurrence:
n = occurrence['number']
n = n + 1
wordCollection.update({'word' : word}, {'$set' : {'number' : n}})
else:
insertlist.append({'word' : word, 'number' : 1})
#wordCollection.insert({'word' : word, 'number' : 1})
if len(insertlist) >= 5000:
print("insert triggered ... ")
wordCollection.insert(insertlist)
insertlist = []
私はこれをfuncと呼んでいます。すべての単語に対して。