Я использую pymongo для массового обновления.
Список имен Ниже приведен отчетливый список имен (каждое имя может иметь Mutiple документы в коллекции)Массовое обновление слишком медленно
Код 1:
bulk = db.collection.initialize_unordered_bulk_op()
for name in names:
bulk.find({"A":{"$exists":False},'Name':name}).update({"$set":{'B':b,'C':c,'D':d}})
print bulk.execute()
Код 2:
bulk = db.collection.initialize_unordered_bulk_op()
counter = 0
for name in names:
bulk.find({"A":{"$exists":False},'Name':name}).update({"$set":{'B':b,'C':c,'D':d}})
counter =counter + 1
if (counter % 100 == 0):
print bulk.execute()
bulk = db.collection.initialize_unordered_bulk_op()
if (counter % 100 != 0):
print bulk.execute()
У меня есть 50000 документов в моей коллекции. Если я избавлюсь от счетчика и если оператор (код 1), код застрянет! С выражением if (код 2), я предполагаю, что эта операция не должна занимать больше двух минут, но она занимает больше места! Не могли бы вы помочь мне сделать это быстрее или я ошибаюсь в своем предположении ?!
Спасибо за помощь, но я думаю, что тайминги, что вы, приведенные выше, не является правильным, поскольку они не предназначены для 10000 документов, но только половина из них (с учетом> 0,5 и <= 0,5 одинаково вероятно). Кроме того, это поможет, если вы можете поделиться тем, как вы проиндексировали поля A и Name для новичков. Еще раз спасибо! – amazingCodingExperience
Также, как бы индексирование закрепило процесс? Не могли бы вы поделиться теорией? – amazingCodingExperience
Добавил больше информации к моему ответу. Тем не менее, mongodb предлагает неплохие онлайн-курсы бесплатно: https://university.mongodb.com/courses/M101P/about Я предлагаю вам взять один из них, чтобы ускориться с монго. – squanto773