MongoDB upsert가 삽입 또는 업데이트를 수행했는지 확인
나는 명백한 곳의 문서에서 이것을 찾을 수 없습니다. Mongo가 upsert 작업에서 삽입 또는 업데이트를 실행했는지 알 수 있는지 알고 싶습니다.
예, 안전 호출 (또는 getLastError)에서 업데이트 함수는 upsert 필드와 updatedExisting 필드가있는 배열을 반환합니다.
여기에서 PHP 버전을 읽을 수 있습니다 : http://php.net/manual/en/mongocollection.insert.php 하단쪽으로.
에 대한 문서에서 말했듯이 upserted
:
upsert가 발생하면이 필드에는 새 레코드의 _id 필드가 포함됩니다. upsert의 경우이 필드 또는 updatedExisting이 표시됩니다 (오류가 발생하지 않은 경우).
따라서 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,
(두 경우 모두 numberAffected = 1을 반환합니다.)
답은 "MongoDB Applied Design Patterns"책에서 발췌 한 것입니다! upsert가 삽입인지 업데이트인지 확인
참조 URL : https://stackoverflow.com/questions/13955212/check-if-mongodb-upsert-did-an-insert-or-an-update
'Programing' 카테고리의 다른 글
ruby-prof 출력 이해 (0) | 2020.12.25 |
---|---|
TFS : 소스 제어에서 이름으로 파일 검색 (0) | 2020.12.25 |
ADT 22.3 (android 4.4)- '씬 생성 후 #init ()를 호출해야 함'오류가 발생 함 (0) | 2020.12.25 |
Objective-c에 SEL 유형이있는 속성 (0) | 2020.12.25 |
R 압축을 풀지 않고 zip 데이터 파일 읽기 (0) | 2020.12.25 |