Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提高性能,了解MongoDB游标的IOPS和用法_Mongodb_Cursor_Pymongo - Fatal编程技术网

提高性能,了解MongoDB游标的IOPS和用法

提高性能,了解MongoDB游标的IOPS和用法,mongodb,cursor,pymongo,Mongodb,Cursor,Pymongo,我正在努力提高使用MongoDB的代码的效率和速度。代码是用Python编写的,并使用pymongo模块 目前,我的代码中有一个部分接收可能从数据库中删除的值列表,并验证实际删除的值: verified_removed = [] for value in possibly_removed: if db.items.find_one({"name" : value}) is None: verified_removed.append(value) 现在

我正在努力提高使用MongoDB的代码的效率和速度。代码是用Python编写的,并使用
pymongo
模块

目前,我的代码中有一个部分接收可能从数据库中删除的值列表,并验证实际删除的值:

verified_removed = []
for value in possibly_removed:
    if db.items.find_one({"name" : value}) is None:
        verified_removed.append(value)
现在我知道我可以把它改成这样:

still_exist = list(db.items.find({"name" : {"$in": possibly_removed}))
verified_removed = [val for val in possibly_removed if val not in still_exist]
但有一件事我不确定:
find方法创建一个可以迭代的游标。但是对于我的每个测试值,光标是否比调用
find\u one
更有效?或者在这两种情况下,我的眼压会保持不变吗

光标是如何工作的?当必须每~1分钟迭代/更新数据库中的许多对象时,提高性能的最佳方法是什么?

find()
一次抓取一批,因此在大多数情况下,它比多次调用
find_one()
更有效。文档中有更多的细节

如果要提高性能,请考虑在正在筛选的字段上添加索引。也请查收