Я использую pymongo для вставки новой коллекции (Plates_X), и когда моя процедура импорта завершена, я хочу удалить старую коллекцию (Plates), а затем изменить имя новой коллекции на старое, поэтому переключая их .
Когда я переименовываю, я получаю новые данные в планшетах, и мне присваивается имя моей коллекции, как и должно быть (пластины), но в старой временной коллекции (Plates_X) нет записей, и я не могу понять, почему.
def __init__(self, url, db_name, collection_name):
self.connection = pymongo.MongoClient(url)
self.mongo_database = self.connection[db_name]
self.collection = self.mongo_database[collection_name]
switch_over_db(self, plates_table_name):
start_time = datetime.datetime.now()
old_name = self.collection.name
# Drop the old dataset if it exists
if plates_table_name in self.mongo_database.collection_names():
print("dropping collection " + str(plates_table_name))
self.mongo_database.drop_collection(plates_table_name)
# Rename Plates_X to Plates (effectively switching the db)
print("Renaming collection " + str(old_name) + " to " + str(plates_table_name))
self.collection.rename(plates_table_name)
# For some reason have to reselect the collection
self.collection = self.mongo_database[plates_table_name]
# Now build the indexes
self.create_indexes()
end_time = datetime.datetime.now()
print("Switched over db in: " + str(end_time - start_time) + str(" seconds"))
Я также не уверен, почему после переименования коллекции и добавления индексов в self.collection
она фактически добавляет индексы к старой временной коллекции (Plates_X).