Массовое обновление массива в MongoDB с помощью CLI - PullRequest
0 голосов
/ 28 марта 2020

Я в процессе обновления созданного веб-приложения стека MERN, которое подключается к MongoDB.

Это социальная платформа, где у пользователя могут быть подписчики и подписчики, которые ранее были массивом. идентификаторов объектов в пользовательской коллекции.

До:

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    //other stuff
  },
  follower: {type: mongoose.Schema.ObjectId, ref: 'User'},
  following: {type: mongoose.Schema.ObjectId, ref: 'User'},
  //more stuff
})

В результате следующие массивы / подписчики в пользовательском объекте будут выглядеть следующим образом: follow: [ObjectId ('5e6e3e56c7a30506a42356fe' ), ObjectId ('5e7f9f11b1d8181ac64b8b47')]

Но у меня нет встроенного веб-крюка, который позволяет пользователю планировать отписку на более поздний срок, поэтому я изменил мою схему, чтобы она содержала FollowSchema, которая представляет как последователя, так и последователя

После:

const FollowSchema = new mongoose.Schema({
  user: {type: mongoose.Schema.ObjectId, ref: 'User'},
  expires: {
    type: Date,
    default: null
  }
})

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    //other stuff
  },
  follower: [FollowSchema],
  following: [FollowSchema],
  //more stuff
})

Все эти функции прекрасно работают в моей локальной версии приложения. Но я знаю, что у меня есть живые пользователи с оригинальной структурой подписчиков, и я хотел бы массово обновить это через MongoDB CLI

Я знаю, как получить пользователей, но я не уверен, как преобразовать массив ObjectIds для массива Objects, где в этом объекте содержится исходный массив.

Любая помощь / предложения будут с благодарностью приняты

...