MongoDB установить ключ, если он существует - PullRequest
0 голосов
/ 27 июня 2019

У меня есть следующая модель:

const PlaylistSchema = new mongoose.Schema({
  name: String,
  id: String,
  offset: Number,
  tracks: [Track],
});

const RoomSchema = new mongoose.Schema({
  name: String,
  queue: [Track],
  playlist: PlaylistSchema,
  users: Array,
  createdBy: Object,
  qrCodeId: String,
  isPlaying: Boolean,
}, {
  timestamps: true,
});

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

Room.findOneAndUpdate(
    { _id: roomId },
    {
      $set: {
        isPlaying: false,
        'playlist.tracks.$[].isPlaying': false,
        'queue.$[].isPlaying': false,
      },
    },
    {
      upsert: false,
      new: true,
    },
   ...

Я хочу установить только сброс значения isPlaying дорожек в списке воспроизведения, если существует кнопка списка воспроизведения.

Я пробовал это:

Room.findOneAndUpdate(
    { _id: roomId },
    {
      $set: {
        isPlaying: false,
        'queue.$[].isPlaying': false,
      },
      playlist: {
        $exists: true,
        $set: {
          'playlist.tracks.$[].isPlaying': false,
        }
      }
    },
    {
      upsert: false,
      new: true,
    },
.... )

Но это каким-то образом удаляет список воспроизведения из объекта.

Есть ли способ, которым я могу это сделать?

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