这是我的问题。我想在 mongodb 中创建一个集合,其中我有一个单词和它出现的次数。我在 python 中做它,它非常慢。这很可能是因为对于我拥有的每个单词,我检查它是否已经在数据库中(使用 *find_one*),如果是,获取它的频率,增加它并将其存储回来(使用update)当然,当单词不存在,我将其附加到列表并定期进行批量插入。
有没有更好的方法来做到这一点?单词的数量很大(可能有不同的语言)。首先使用 mongoDB 是正确的吗?我选择了 mongoDB,因为它很容易安装,而且我在 10 分钟内就学会了教程……
编辑- 也添加了代码。当我说大时,我的意思是一个大约 4 GB 大的文件,其中包含单词......
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 = []
我称之为函数。对于每一个字。