programing

Mongodb 존재하지 않는 경우에만 삽입하는 방법(존재하는 경우 업데이트 없음)?

muds 2023. 6. 20. 21:55
반응형

Mongodb 존재하지 않는 경우에만 삽입하는 방법(존재하는 경우 업데이트 없음)?

문서가 존재하는 경우 기존 문서를 업데이트하지 않고 문서가 존재하지 않는 경우 어떻게 삽입할 수 있습니까?

다음과 같은 문서가 있다고 가정해 보겠습니다.

  {
          "company":"test", 
          "name":"nameVal"
}

컬렉션에 회사가 포함되어 있는지 확인하고 싶습니다.test존재하지 않는 경우 새 문서를 만들고 싶습니다.만약 그것이 존재한다면 나는 아무것도 하고 싶지 않습니다.나는 노력했다.update와 함께upsert = true그러나 기존 문서가 있는 경우 문서를 업데이트합니다.

제가 시도한 것은 다음과 같습니다.

db.getCollection('companies').update(
    {
  "company": "test"
  },
  {
  "company": "test",
  "name": "nameVal2"
},
{upsert:true}
)

하나의 쿼리를 사용하여 이 문제를 해결하는 데 도움을 주시면 감사하겠습니다.

$setOn을 사용할 수 있습니다.좋아요 삽입,

db.companies.updateOne(
   {"company": "test"},
   { $setOnInsert: { "name": "nameVal2", ... } },
   { upsert: true }
)

이 업데이트 작업이 삽입을 수행하지 않는 경우,$setOnInsert아무 효과도 없을 것입니다.그래서 그.name삽입 시에만 업데이트됩니다.

편집: 제 솔루션은 원래 게시물에서 요청한 것이 아닌 어레이에서만 작동한다고 들었습니다.

어레이를 사용하는 경우 $SetOn 대신 $addToSet: 연산자를 사용할 수 있습니다.삽입.

db.companies.updateOne(
   {"company": "test"},
   { $addToSet: { ["name": "nameValue"]} },
   { new: true })
)

언급URL : https://stackoverflow.com/questions/48220677/mongodb-how-to-insert-only-if-does-not-exists-no-update-if-exist

반응형