programing

MongoDB의 replaceOne()과 updateOne()의 차이점은 무엇입니까?

goodjava 2023. 2. 15. 22:01

MongoDB의 replaceOne()과 updateOne()의 차이점은 무엇입니까?

MongoDB 벌크 조작에는 다음 두 가지 옵션이 있습니다.

  1. Bulk.find.updateOne()

    단일 문서 업데이트 작업을 대량 작업 목록에 추가합니다.작업은 기존 문서를 바꾸거나 기존 문서의 특정 필드를 업데이트할 수 있습니다.

  2. Bulk.find.replaceOne()

    단일 문서 대체 작업을 대량 작업 목록에 추가합니다.를 사용합니다.Bulk.find()바꿀 문서를 결정하는 조건을 지정하는 방법.Bulk.find.replaceOne()메서드는 치환을 단일 문서로 제한합니다.

문서에 따르면 이 두 가지 방법 모두 일치하는 문서를 대체할 수 있습니다.제가 제대로 이해한 건가요?updateOne()보다 범용적인 방법으로, 다음과 같이 문서를 대체할 수 있습니다.replaceOne()특정 필드만 업데이트합니까?

와 함께replaceOne()전체 문서만 바꿀 수 있습니다.updateOne()그럼 필드를 갱신할 수 있습니다.

부터replaceOne()전체 문서를 바꿉니다. 새 문서에 포함되지 않은 이전 문서의 필드가 손실됩니다.와 함께updateOne()이전 문서의 필드를 잃지 않고 새 필드를 추가할 수 있습니다.

예를 들어 다음 문서가 있는 경우:

{
   "_id" : ObjectId("0123456789abcdef01234567"),
   "my_test_key3" : 3333
}

사용방법:

replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})

결과는 다음과 같습니다.

{
   "_id" : ObjectId("0123456789abcdef01234567"),
   "my_test_key4" : 4.0
}

사용방법:

updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})

결과는 다음과 같습니다.

{
   "_id" : ObjectId("0123456789abcdef01234567"),
   "my_test_key3" : 3333.0,
   "my_test_key4" : 4.0
}

주의:updateOne()문서에서 업데이트 연산자를 사용할 수 있습니다.

replaceOne()문서 전체를 치환합니다.updateOne()필드를 업데이트 또는 추가할 수 있습니다.사용시updateOne()또한 문서에 대한 업데이트를 안정적으로 수행할 수 있는 업데이트 운영자에 액세스할 수 있습니다.예를 들어, 2개의 클라이언트가 같은 문서의 같은 필드의 값을 "동시에" 증가시키면, 양쪽의 증분이 취득되는 한편, 치환의 경우, 다른 한쪽의 증분을 덮어쓸 가능성이 있습니다.

부터replaceOne()전체 문서를 바꿉니다. 새 문서에 포함되지 않은 이전 문서의 필드가 손실됩니다.와 함께updateOne()이전 문서의 필드를 잃지 않고 새 필드를 추가할 수 있습니다.

예를 들어 다음 문서가 있는 경우:

{
   "_id" : ObjectId("0123456789abcdef01234567"),

   "my_test_key3" : 3333
}

사용방법:

replaceOne({"_id" : ObjectId("0123456789abcdef01234567")}, { "my_test_key4" : 4})

결과는 다음과 같습니다.

{
   "_id" : ObjectId("0123456789abcdef01234567"),
   "my_test_key4" : 4.0
}

사용방법:

updateOne({"_id" : ObjectId("0123456789abcdef01234567")}, {$set: { "my_test_key4" : 4}})

결과는 다음과 같습니다.

{
   "_id" : ObjectId("0123456789abcdef01234567"),
   "my_test_key3" : 3333.0,
   "my_test_key4" : 4.0
}

db.collection.replaceOne()와 정확히 같은 일을 한다db.collection.updateOne().

가장 큰 차이점은 이다.db.collection.replaceOne()편집 중인 데이터는 서버 사이를 왔다 갔다 해야 합니다.db.collection.UpdateOne()문서 전체가 아닌 필터링된 항목만 요청합니다.

언급URL : https://stackoverflow.com/questions/35848688/whats-the-difference-between-replaceone-and-updateone-in-mongodb