вставить элемент в БД, только если он не существует

#mongodb #mongoose

#mongodb #мангуст

Вопрос:

Почему я использую mongoose.

У меня есть этот запрос, который вставляет около 30 элементов в мою базу данных:

 await Code.insertMany(information);
  

Информация выглядит следующим образом:

 [
  {
    discount: 20,
    url: '...',
    code: "...",
    sponsorUrl: "...",
    sponsorAccount: "..."
  },
]
  

url Он уникален. Я хочу снова добавить 30 элементов в базу данных, но может случиться так, что 10 элементов из 30 уже сохранены в базе данных

Как я могу этого добиться? Я мог бы зациклить его, но есть ли лучшее решение?

Я не хочу иметь дублированные URL-адреса

Ответ №1:

Параметр upsert = true создает объект, если URL-адрес еще не существует в документе в коллекции.

 for (var i of information){
    Code.update(
        {'url' : i.url }, 
        {$set : i}, 
        {upsert : true, multi : true}, 
        function(err, doc){
                if(err) throw err;
                console.log(doc);
        }
    )
}