в настоящее время, используя pymongo, я перебираю очень большую коллекцию mongodb, например:
client = MongoClient(config.get('db','url'))
db=client.mydatabase
incomings = db.incoming.find()
for incoming in incomings:
do something with incoming
Вместо этого, при каждой итерации цикла я хотел бы прочитать определенное количество диктов / документов водин раз, так что я не буду получать диктат после диктата из базы данных, а скорее набор диктов, как это: [{...},{...},{...},...]
Я стремлюсь уменьшить нагрузку на базу данных. Если с использованием курсора это уже идеально, то я согласен с моим текущим решением.
Кстати, входящая коллекция обрабатывается сотнями документов в секунду, она служит постоянным буфером для входящих сообщений zmq.
Можете ли вы дать мне какие-либо соображения по улучшению производительности, особенно для моего случая, когда поступает и выходит много данных?
При хранении данных я уже буферизую, используя insert_many
вместо отдельных вставок, и, конечно, данные покидают коллекцию с помощью delete_many
.