Мангуст обновит вложенный документ, если запись уникальна

#node.js #mongodb #mongoose

#node.js #mongodb #мангуст

Вопрос:

У меня есть коллекция mongodb со следующей схемой

 const userSchema = new mongoose.Schema({
      Nickname: String,
      Age: String,
      Playlists: Array
   });
  

Я обновлял список воспроизведения с помощью приведенного ниже запроса, и он работает, но я понимаю, что он не проверяет, существует ли запись в коллекции, прежде чем обновлять ее. Следовательно, у меня есть дубликаты, если запрос выполняется дважды. Есть идеи, как я могу изменить его, чтобы предотвратить дублирование?

 User.updateOne({
      _id: req.user._id
    }, {
      $push: {
        Playlists: req.body
      }
    }).then(data => {
      res.redirect("/home")
    });
  

Ответ №1:

В вашем случае, чтобы предотвратить дублирование в вашем Playlists массиве, вы можете использовать $addToSet вместо $push . Что-то вроде:

 User.updateOne({
  _id: req.user._id
}, {
  $addToSet: {
    Playlists: req.body
  }
})