我是MongoDB和pyMongo的新手, 并且我遇到了一些性能问题 关于游标。
TL,DNR:我尝试执行的任何操作 使用游标大约需要一秒钟。
长版
我有一个小型数据库,我已经批量加载了。每个条目有3个字段:
dom:域名(唯一) 日期:日期,YYYYMMDD flag:string
我已经加载了大约190万个条目,没有发生任何事故,并且非常快。
我在dom字段上创建了一个哈希索引。
现在,我想通过域字段获取某些记录,并使用Python程序更新它们。
问题所在。
我使用的是最新的MongoDB和最新的pyMongo。
剥离计划......
import pymongo
from pymongo import MongoClient
db = client.myindexname
posts = db.posts
print list(db.profiles.index_information()) # shows hash index is present
for k in newdomainlist.keys(): #iterate list of domains to check
ret = posts.find({"dom": k}) #this runs fine, and quickly
#'ret' is a cursor
print ret #this runs quickly
#Here's the problem
print ret.count() #this takes about a second. why?
如果我只是打印ret',速度很好。但是,如果我尝试 在光标中引用任何,速度下降到地板 - 我 每秒可以做大约1次操作。
在这种情况下,我只是想看看ret.count()是否返回' 0' (我们不会 有这个域名),或者' 1' (我们已经有了)。
我尝试在查找中添加batch_size(10000),但没有帮助。
我已经加载了Python C扩展。
我到底做错了什么?
感谢
答案 0 :(得分:1)
事实证明,我在错误的字段'collection'上创建了我的哈希索引,而不是'posts'。把它归结为mongodb缺乏经验。我们现在可以关闭这个,或者完全删除它。