node.js - Добавить или обновить документ в MongoDB


0

В бд есть несколько документов. Каким методом mongoose можно добавить новые, а если у них совпадают уникальные поля, то обновить эти документы?

const productSchema = new mongoose.Schema({
    siteID: {
       type: String,
       unique: true,
    },
    sex: {
        type: String,
    },
    subcategory: {
        type: String,
    });

А добавляю я так:

return Promise.all(prod.map(product => {
                 return Product.create({
                     siteID: product[0],
                     sex: product[1],
                     subcategory: product[2],

                 })
             }))

Понятно, что сейчас он выкидывает ошибку и не добавляет документы с одинаковым siteID.

А мне нужно что бы документы с одинаковым siteID обновлялись, а другие добавлялись в БД.

Заранее спасибо

Источник
  •  1064
  •  0
  • 17 янв 2019 2019-01-17 13:07:35
@Yaant ! Спасибо)) — 18 янв 20192019-01-18 10:08:10.000000
Нет. Я же написал, надо выставить опцию upsert в true, тогда, если документ не найден, он будет создан. — 18 янв 20192019-01-18 09:30:17.000000
@Yaant Получается нужно последовательно добавлять каждый документ? Сначала искать его, если есть, то обновлять (findOneAndUpdate), а если нет, то добавлять (create)? Это достаточно оптимальное решение? Я просто думал что есть какие то готовые решения для таких манипуляций. — 18 янв 20192019-01-18 09:01:26.000000
findOneAndUpdate с upsert : true? — 18 янв 20192019-01-18 08:05:45.000000

Ответов пока нет