programing

MongoDB upsert가 삽입 또는 업데이트를 수행했는지 확인합니다.

closeapi 2023. 5. 21. 11:29
반응형

MongoDB upsert가 삽입 또는 업데이트를 수행했는지 확인합니다.

서류상으로는 이것을 찾을 수 없습니다.Mongo가 upsert 작업에서 insert 또는 update를 실행했는지 알 수 있는지 알고 싶습니다.

예, 있습니다. 안전한 호출(또는 getLastError) 시 업데이트 기능은 업서트 필드와 업데이트된 배열을 반환합니다.기존 필드.

여기에서 PHP 버전을 읽을 수 있습니다. http://php.net/manual/en/mongocollection.insert.php 은 맨 아래에 있습니다.

다음 문서에 나와 있는 것처럼upserted:

업버트가 발생한 경우 이 필드에는 새 레코드의 _id 필드가 포함됩니다.upserts의 경우 이 필드 또는 업데이트됨오류가 발생하지 않는 한 기존이 존재합니다.

그래서 upserted는 다음을 포함합니다._id삽입이 완료되었거나 증가할 경우 새 레코드의updatedExisting기록을 갱신한 경우.

저는 모든 운전자들에게 비슷한 것이 나타날 것이라고 확신합니다.

편집

그것은 실제로 부울이 될 것입니다.updatedExisting의 분야.true또는false

참조용으로만 node.js에서:

collection.update( source, target, { upsert: true }, function(err, result, upserted) {
  ...
});

참조용으로만 Mongoose 3.6을 사용하는 node.js에서:

model.update( findquery, updatequery, { upsert: true }, function(err, numberAffected, rawResponse) {
  ...
});

RawResponse가 기존 문서를 업데이트했을 때 다음과 같이 나타납니다.

{ updatedExisting: true,
  n: 1,
  connectionId: 222,
  err: null,
  ok: 1 }

새 문서를 만들 때 다음과 같이 나타납니다.

{ updatedExisting: false,
  upserted: 51eebc080eb3e2208a630d8e,
  n: 1,
  connectionId: 222,
  err: null,

(두 경우 모두 해당 번호 = 1을 반환함)

답변은 "MongoDB Applied Design Patterns" Book에서 가져왔습니다! 업서트가 삽입인지 업데이트인지 확인합니다.

MongoDB 드라이버 사용3.5.9Node.js에서, 나는 우리가 사용한 후에 관심이 있는 이러한 속성들이 있다는 것을 발견했습니다.updateOne와 함께{ upsert: true }:

{
  modifiedCount: 0,
  upsertedId: null,
  upsertedCount: 0,
  matchedCount: 1
}

uvert가 무언가를 삽입했을 때, 우리는 다음을 얻을 것입니다.upsertedCount > 0그리고.upsertedId새로 삽입한 문서 ID를 보유합니다.uvert가 무언가를 수정했을 때, 우리는 다음을 얻을 것입니다.modifiedCount > 0.

모든 CRUD 작업에 대한 튜토리얼은 여기에 있습니다. https://mongodb.github.io/node-mongodb-native/3.6/tutorials/crud/

언급URL : https://stackoverflow.com/questions/13955212/check-if-mongodb-upsert-did-an-insert-or-an-update

반응형