복붙노트

[MONGODB] 삽입 또는 갱신하여 MongoDB의 upsert 그랬다면 확인

MONGODB

삽입 또는 갱신하여 MongoDB의 upsert 그랬다면 확인

나는 명백한 장소 중 하나의 문서에이를 찾을 수 없습니다. 나는 몽고가 upsert 작업에 삽입 또는 업데이트를 실행하면 알 수 있는지 알고 싶습니다?

해결법

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

    1.예, 안전 호출 (또는 getLastError)에 업데이트 기능은 upsert 필드와 updatedExisting 필드와 배열이 반환된다.

    예, 안전 호출 (또는 getLastError)에 업데이트 기능은 upsert 필드와 updatedExisting 필드와 배열이 반환된다.

    http://php.net/manual/en/mongocollection.insert.php 바닥을 향해 : 당신이 여기의 PHP 버전을 읽을 수 있습니다.

    이 문서 내에서 말하기를 upserted에 :

    upserted 새로운 레코드의 _ID를 포함 그래서 삽입이 수행 된 경우 또는 레코드를 업데이트 한 경우는 updatedExisting을 증가합니다.

    나는 비슷한 일이 모든 드라이버에 나타납니다 확신합니다.

    사실은 참 또는 거짓의 updatedExisting 필드에 부울 될 것입니다

  2. ==============================

    2.참조 용으로 만, Node.js를에서 :

    참조 용으로 만, Node.js를에서 :

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

    3.몽구스 3.6을 사용 Node.js를 참조 만 들어 :

    몽구스 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을 반환)

  4. ==============================

    4.대답은 "MongoDB를 응용 디자인 패턴"책에서 찍은 ! upsert이 삽입 여부 결정 또는 갱신

    대답은 "MongoDB를 응용 디자인 패턴"책에서 찍은 ! upsert이 삽입 여부 결정 또는 갱신

  5. from https://stackoverflow.com/questions/13955212/check-if-mongodb-upsert-did-an-insert-or-an-update by cc-by-sa and MIT license