MongoDB에서 findOneAndUpdate() 메서드 사용

Tahseen Tauseef 2024년2월15일
  1. MongoDB에서 findOneAndUpdate() 메서드 사용
  2. findOneAndUpdate() 메서드를 사용하여 일치하는 첫 번째 문서 업데이트
  3. findOneAndUpdate() 메서드를 사용하여 포함된 문서의 값 업데이트
  4. findOneAndUpdate() 메서드를 사용하여 일치하는 첫 번째 문서를 업데이트하고 업데이트된 문서 반환
  5. 결론
MongoDB에서 findOneAndUpdate() 메서드 사용

이 기사에서는 MongoDB의 findOneAndUpdate() 메소드를 소개합니다. 이 방법을 사용하여 일치하고 포함된 첫 번째 문서를 업데이트합니다.

MongoDB에서 findOneAndUpdate() 메서드 사용

db.collection.findOneAndUpdate() 메서드는 선택 기준에 따라 컬렉션의 일치하는 문서를 업데이트합니다. 이 방법은 일치하는 문서가 두 개 이상인 경우 선택 기준과 일치하는 첫 번째 문서만 업데이트합니다.

문서를 업데이트해도 _id 필드의 값은 변경되지 않습니다.

이 메서드는 원본 문서를 반환합니다. 그러나 업데이트된 문서를 반환하려면 returnNewDocument 매개변수의 값을 true로 지정해야 합니다.

이 방법을 사용하여 포함된 문서를 바꿀 수 있습니다. 이 접근 방식은 다중 문서 트랜잭션에서도 사용할 수 있습니다.

통사론:

db.collection.findOneAndUpdate(

selection_criteria: <document>,

update_data: <document>,
{
   projection: <document>,

    sort: <document>,

    maxTimeMS: <number>,

    upsert: <boolean>,

    returnNewDocument: <boolean>,

    collation: <document>,

    arrayFilters: [ <filterdocument1>,  ]
})

매개변수:

  1. 첫 번째 매개변수인 selection_criteria는 업데이트를 위한 선택 기준입니다. 이 매개변수의 유형은 문서입니다.
  2. 두 번째 매개변수 update_data는 업데이트할 문서입니다. 이 매개변수의 유형은 문서입니다.
  3. 세 번째 매개변수는 선택 사항입니다.

선택적 매개변수:

  1. 프로젝션: 이 매개변수의 유형은 문서입니다. 프로젝션 매개변수는 일치하는 문서에 반환되는 필드를 결정합니다.

    이 문서는 다음 값을 사용합니다.

    { field1: <boolean>, field2: <boolean> ... }
    

    필드 값이 1 또는 true인 경우 필드가 포함되었음을 나타내고 필드 값이 0 또는 false인 경우 필드가 제외됩니다.

  1. 정렬: 쿼리가 여러 문서를 선택하는 경우 작업에서 수정할 문서를 결정합니다. db.collection.findOneAndUpdate() 메서드는 이 인수로 지정된 정렬 순서로 첫 번째 문서를 업데이트합니다.

    이 매개변수의 유형은 문서입니다.

  2. maxTimeMS: 이 매개변수의 유형은 숫자입니다. 작업이 완료되어야 하는 시간 제한(밀리초)을 지정합니다.

    시간 제한을 초과하면 오류를 반환합니다.

  3. upsert: 이 매개변수의 기본값은 false입니다.

    이 옵션의 값이 true로 설정되고 지정된 필터 쿼리와 일치하는 문서가 없다고 가정합니다. 이 경우 이 메서드는 새 문서를 만듭니다.

    returnNewDocument 옵션의 값이 true.로 설정되지 않은 경우 null 값(새 문서 삽입 후)을 반환합니다. 또는 이 upsert 옵션의 값이 true.로 설정된 경우 이 메서드는 지정된 필터 쿼리와 일치하는 문서를 업데이트합니다.

  4. returnNewDocument: 이 매개변수 유형은 부울입니다. 기본적으로 이 메서드는 원본 문서를 반환합니다.

    returnNewDocument 매개변수를 사용하고 해당 값을 true로 설정하여 업데이트된 문서를 반환하십시오.

  5. Collation: 작업에 대한 collation 사용을 지정합니다. 이를 통해 사용자는 대소문자 및 악센트 표시에 대한 규칙과 같은 문자열 비교에 대한 언어별 규칙을 결정할 수 있습니다.

    이 매개변수의 유형은 문서입니다.

  6. arrayFilters: 필터 문서의 배열은 배열 필드에서 업데이트 작업을 위해 수정할 배열 요소를 나타냅니다. 이 매개변수의 유형은 배열입니다.

원본 문서를 반환하지만 업데이트된 문서를 반환하려면 returnNewDocument 매개변수 값을 true로 설정해야 합니다.

다음 예제에서는 다음 데이터베이스로 작업합니다. 학생의 세부 정보가 포함된 문서로 학생이라는 컬렉션을 만듭니다.

데이터베이스는 다음과 같습니다.

db={
  "students": [
    {
      id: 1,
      name: "Ali",
      language: "JavaScript",
      score: 82
    },
    {
      id: 2,
      name: "Haris",
      language: "Python",
      score: 91
    },
    {
      id: 3,
      name: "Hamza",
      language: "Python",
      score: {
        "Physics": 84,
        "Math": 85
      }
    }
  ]
}

findOneAndUpdate() 메서드를 사용하여 일치하는 첫 번째 문서 업데이트

이 예에서는 아래 제공된 쿼리를 사용합니다.

db.students.findOneAndUpdate({name:"Ali"},{$inc:{score:4}})

여기에서 새 문서(예: {$inc:{score:4}})로 선택 기준(예: 이름: "Ali")에 따라 첫 번째로 일치하는 문서를 업데이트합니다. 의 값 점수 필드가 4씩 증가하고 원본 문서를 반환합니다.

출력:

findOneAndUpdate() 메서드

문서를 업데이트한 후 이 출력을 반환합니다.

findOneAndUpdate() 메서드를 사용하여 포함된 문서의 값 업데이트

이 예에서는 아래 제공된 쿼리를 사용합니다.

db.student.findOneAndUpdate({name:"Hamza"},{$inc:{"score.Math":5}})

여기에서 포함된 문서의 수학 필드 값을 업데이트합니다. 수학 필드의 값이 5씩 증가합니다.

출력:

findOneAndUpdate() 방법 2

findOneAndUpdate() 메서드를 사용하여 일치하는 첫 번째 문서를 업데이트하고 업데이트된 문서 반환

이 예에서는 아래 제공된 쿼리를 사용합니다.

 db.student.findOneAndUpdate({name:"Ali"},{$inc:{score:5}},{returnNewDocument:true})

여기에서 선택 기준(즉, name: "Ali")에 따라 새 문서(예: {$inc:{score:5}})에 따라 첫 번째로 일치하는 문서를 업데이트합니다. 의 값 점수 필드가 5씩 증가합니다.

returnNewDocument 값을 true로 설정했기 때문에 새로 업데이트된 문서를 반환합니다.

출력:

findOneAndUpdate() 방법 3

결론

이 MongoDB 자습서 기사의 도움을 통해 선택 기준과 일치하는 컬렉션의 첫 번째 일치 문서를 업데이트하는 데 사용되는 db.collection.findOneAndUpdate() 메서드를 사용하는 방법을 배웠습니다. 또한 이 방법을 사용하여 포함된 문서를 대체하고 다중 문서 트랜잭션에서도 사용할 수 있습니다.

관련 문장 - MongoDB Method