복붙노트

[MONGODB] 기반이 존재하지 않을 경우 배열에 여러 개체를 추가 몽구스

MONGODB

기반이 존재하지 않을 경우 배열에 여러 개체를 추가 몽구스

어떻게 키를 기반으로 배열에 여러 개체를 추가하려면?

나는 각 개체의 키가, 다른 추가 개체를 존재하거나 중복되지 않는지, 하나 개의 쿼리에 여러 개체를 추가해야합니다. (라벨은 중복 될 수 있습니다)

개요

new Schema({
      additional: [
        {
          key: { type: String, required: true, unique: true },
          label: { type: String, required: true }
        }
      ]
})

요청 페이로드 :

[ {key: "city", label: "CITY"}, {key: "gender", label: "GENDER"}
, {key: "city" ,label: "CITY1}, {key: "city2", label: "CITY"}]

예상 결과 :

[
 {key: "city", label: "CITY"},
 {key: "gender", label: "GENDER"},
 {key: "city2", label: "CITY"}
]

나는 해결책을 찾기 위해 시도했지만 하나를 찾을 수 없습니다.

해결법

  1. ==============================

    1.당신은 MongoDB의에서 bulkWrite 작업을 사용하여 시도 할 수 있습니다

    당신은 MongoDB의에서 bulkWrite 작업을 사용하여 시도 할 수 있습니다

    업데이트에 페이로드 다음 한 가정

    const payload = [
      { key: "city", label: "CITY" }, { key: "gender", label: "GENDER" },
      { key: "city", label: "CITY1" }, { key: "city2", label: "CITY" }
    ]
    

    대량 업데이트 문서에 쿼리

    Model.bulkWrite(
      payload.map((data) => 
        ({
          updateOne: {
            filter: { '_id': 'xxxx', 'additional.key' : { $ne: data.key } },
            update: { $push: { additional: data } }
          }
        })
      )
    })
    

    어떤이 같은 업데이 트에 대량으로 요청을 보내드립니다

    bulkWrite([
      { updateOne: { filter: { '_id': 'xxxx', 'additional.key' : { $ne: data.key } }, update: { $push: { additional: data } } } },
      { updateOne: { filter: { '_id': 'xxxx', 'additional.key' : { $ne: data.key } }, update: { $push: { additional: data } } } }
    ])
    
  2. from https://stackoverflow.com/questions/51801033/mongoose-add-multiple-object-to-array-if-not-exist-based by cc-by-sa and MIT license