索引会使find_one()更快吗?

2024-09-25 08:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个pymongo查询,在一个包含大约4000个文档的集合中,如下所示:

mong  =  pymongo.Connection()['ASD_2']['APS2'] 
py_mong = mong.find_one({'plate':'123456'})

考虑到.explain()["cursor"].explain()["nscanned"]find_one()上是不允许的,因此手头上没有找到扫描性质的方法,当我只打算使用find_one()时,有人能告诉我是否值得索引集合吗


Tags: 文档pyfindconnectiononecursor性质pymongo
2条回答

是的,当然

我怎么知道

首先,如果不这样做,那将是完全不能接受的。人们会抱怨find_onefind相比的惊人和不必要的缓慢,开发团队会修复它(或者冒着被视为哑巴的风险)

其次,我检查了代码。实现正是您所期望的,这意味着find_one只是find的包装器:

def find_one(self, spec_or_id=None, *args, **kwargs):
    if spec_or_id is not None and not isinstance(spec_or_id, dict):
        spec_or_id = {"_id": spec_or_id}
    for result in self.find(spec_or_id, *args, **kwargs).limit(-1):
        return result
    return None

(Pymango版本2.4.2)

是的,索引将避免线性搜索所需的板和工作在对数时间(快得多)

相关问题 更多 >