У меня возникли проблемы с очень большой коллекцией MongoDB (19 миллионов документов).Почему данные отсутствуют при обработке больших коллекций MongoDB в PyMongo? Что я могу сделать с этим?
Когда я просто перебираю коллекцию, как показано ниже, PyMongo, похоже, сдаётся после 10 593 454 документов. Это похоже на то же, даже если я использую skip(), вторая половина коллекции кажется программно недоступной.
#!/usr/bin/env python
import pymongo
client = pymongo.MongoClient()
db = client['mydb']
classification_collection = db["my_classifications"]
print "Collection contains %s documents." % db.command("collstats", "my_classifications")["count"]
for ii, classification in enumerate(classification_collection.find(no_cursor_timeout=True)):
print "%s: created at %s" % (ii,classification["created_at"])
print "Done."
Отчеты сценарий изначально:
Collection contains 19036976 documents.
В конце концов, сценарий завершается, я не получаю никаких ошибок, и я получаю "Done". сообщение. Но последняя строка Печатаемая
10593454: created at 2013-12-12 02:17:35
Все мои записи вошли в систему только в течение последних 2-х лет, самые последние из них, кажется, недоступны. Кто-нибудь знает, что здесь происходит? Что я могу сделать по этому поводу?
как долго он настраивается, прежде чем он «кончится». Может ли это время? – Takarii
@Takarii, как вы можете видеть, я отключил таймауты, используя 'no_cursor_timeout = True'. Сказав это, он вечно вешает на эту сумму 10 593 454. Таким образом, это действительно похоже на тайм-аут. хотя программа в конечном итоге продолжается. Но почему каждый тайм-аут после такой же конкретной записи? – alexbfree
Не слишком уверен. Можете ли вы напрямую запросить базу данных, чтобы узнать, действительно ли вы можете получить записи в первую очередь? – Takarii