Пимонго - переименование коллекции - PullRequest
0 голосов
/ 15 марта 2019

Я использую 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).

...