MongoDB ленивая миграция - PullRequest
0 голосов
/ 15 мая 2019

В настоящее время я работаю над API и пришел к вопросу: как лучше всего выполнять медленную миграцию документов.Например:

Версия 1 документа имеет следующую структуру:

_id: mongoose.Schema.Types.ObjectId,
    email: { type: String, required: true },
    username: { type: String, default: null },
    password: { type: String, required: true },
    registeredOn: { type: Date, default: Date.now },
    permission_level: { type: Number, default: constants.LEVELS.DEFAULT },
    settings: {
        usesCommunity: { type: Boolean, default: false }
    }

Но в новых документах (Версия 2)

у меня есть дополнительное поле "personal_info"например:

_id: mongoose.Schema.Types.ObjectId,
    email: { type: String, required: true },
    username: { type: String, default: null },
    password: { type: String, required: true },
    registeredOn: { type: Date, default: Date.now },
    permission_level: { type: Number, default: constants.LEVELS.DEFAULT },
    settings: {
        usesCommunity: { type: Boolean, default: false }
    },
    personal_info: {
        first_name: { type: String, default: null },
        last_name: { type: String, default: null },
        date_of_birth: { type: Date, default: null }
    }

Каков наилучший способ «ленивой» миграции документов, у которых еще нет этого поля «personal_info»?

Например, если я попытаюсь получитьДанные "personal_info", я получил бы ошибку, если документ все еще версия 1 вместо версии 2.

Есть ли какая-либо библиотека или логический / простой способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...