Я использую pymongo для доступа к данным с сервера mongo. На сервере находятся миллиарды документов. Поэтому я использую команды find и skip для одновременного доступа к n документам. Мне нужно получить доступ только к тем документам, которые имеют "sample_key_XYZ" как _tag.
print('start',datetime.datetime.now())
a=db.collection.find({"_tag":re.compile('latest')}).skip(2000000).limit(2000)
print('end',datetime.datetime.now())
Работает нормально, курсор перемещается за секунду. Но когда я попытался получить доступ к данным, он завис (занимает несколько часов)
* 1004 т.е. *
print('start',datetime.datetime.now())
a=db.collection.find({"_tag":re.compile('sampe_key')}).skip(2000000).limit(2000)
for doc in a:
print(doc["_tag"])
break
print('end',datetime.datetime.now())
но если я изменяю пропуск на небольшое число (2500), он выполняется очень быстро (1с)
('start', datetime.datetime (2019, 4, 1, 16, 59, 3, 685992))
(«конец», datetime.datetime (2019, 4, 1, 16, 59, 3, 686293))
когда используется без прохождения документа.