Обновление полей в ранее сохраненных документах с помощью mongoose - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть старая схема, которую я хочу обновить. После обновления схемы предыдущие записи, сохраненные перед новой схемой, не отражают новые поля, которые я указал в новой схеме. Как мне сделать так, чтобы они отражали все поля новой схемы. Я пытался использовать mongoose defaults, но это не сработало. Вот мой код

const user = mongoose.Schema({
  _id : mongoose.Schema.Types.ObjectId,
  email : String,
  firstname : String,
  lastname : String
})

module.exports = mongoose.model('User', user)

Я хочу добавить поле age (и оно должно появляться во всех предыдущих документах). В настоящее время только новые документы отражают поле age. Как я могу это сделать? Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2020

Вы можете просто запустить команду updateMany и отфильтровать все User's, которые не имеют поля age, а затем добавить поле age со значением undefined:

User.updateMany({ age: { $exists: false} }, { $set: { age: undefined } });

Вместо того чтобы делать это через mongoose, вы также можете просто заскочить в БД и сделать это через оболочку mongo следующим образом:

db.users.updateMany({ age: { $exists: false} }, { $set: { age: undefined } });

Вот изображение того, что это выглядит так:

users db query

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