gpt4 book ai didi

python - PyMongo——游标迭代

转载 作者:IT老高 更新时间:2023-10-28 13:05:02 26 4
gpt4 key购买 nike

我最近开始通过 shell 和 PyMongo 测试 MongoDB。我注意到返回游标并尝试对其进行迭代似乎是实际迭代的瓶颈。有没有办法在迭代期间返回多个文档?

伪代码:

for line in file:
value = line[a:b]
cursor = collection.find({"field": value})
for entry in cursor:
(deal with single entry each time)

我希望做的是这样的:

for line in file
value = line[a:b]
cursor = collection.find({"field": value})
for all_entries in cursor:
(deal with all entries at once rather than iterate each time)

我已经尝试按照 this question 使用 batch_size()并将值一直更改为 1000000,但它似乎没有任何效果(或者我做错了)。

非常感谢任何帮助。请对这个 Mongo 新手放轻松!

--- 编辑 ---

谢谢迦勒。我想你已经指出了我真正想问的问题,那就是:有没有办法做一个 collection.findAll() 或者 cursor.fetchAll( ) 命令,与 cx_Oracle 模块一样吗?问题不在于存储数据,而是尽可能快地从 Mongo DB 中检索数据。

据我所知,数据返回给我的速度取决于我的网络,因为 Mongo 必须单次获取每条记录,对吗?

最佳答案

您是否考虑过这样的方法:

for line in file
value = line[a:b]
cursor = collection.find({"field": value})
entries = cursor[:] # or pull them out with a loop or comprehension -- just get all the docs
# then process entries as a list, either singly or in batch

或者,类似:

# same loop start
entries[value] = cursor[:]
# after the loop, all the cursors are out of scope and closed
for value in entries:
# process entries[value], either singly or in batch

基本上,只要您有足够的 RAM 来存储您的结果集,您就应该能够在处理之前将它们从游标中拉出并保留在它们上面。这可能不会显着加快,但它会减轻任何特别是光标的减速,并且如果您准备好并行处理数据,那么您可以自由地处理数据。

关于python - PyMongo——游标迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680659/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com