MongoDB에서 findOneAndUpdate() 메서드 사용
-
MongoDB에서
findOneAndUpdate()
메서드 사용 -
findOneAndUpdate()
메서드를 사용하여 일치하는 첫 번째 문서 업데이트 -
findOneAndUpdate()
메서드를 사용하여 포함된 문서의 값 업데이트 -
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>, … ]
})
매개변수:
- 첫 번째 매개변수인
selection_criteria
는 업데이트를 위한 선택 기준입니다. 이 매개변수의 유형은 문서입니다. - 두 번째 매개변수
update_data
는 업데이트할 문서입니다. 이 매개변수의 유형은 문서입니다. - 세 번째 매개변수는 선택 사항입니다.
선택적 매개변수:
-
프로젝션
: 이 매개변수의 유형은 문서입니다. 프로젝션 매개변수는 일치하는 문서에 반환되는 필드를 결정합니다.이 문서는 다음 값을 사용합니다.
{ field1: <boolean>, field2: <boolean> ... }
필드 값이
1
또는true
인 경우 필드가 포함되었음을 나타내고 필드 값이0
또는false
인 경우 필드가 제외됩니다.
-
정렬
: 쿼리가 여러 문서를 선택하는 경우 작업에서 수정할 문서를 결정합니다.db.collection.findOneAndUpdate()
메서드는 이 인수로 지정된 정렬 순서로 첫 번째 문서를 업데이트합니다.이 매개변수의 유형은 문서입니다.
-
maxTimeMS
: 이 매개변수의 유형은 숫자입니다. 작업이 완료되어야 하는 시간 제한(밀리초)을 지정합니다.시간 제한을 초과하면 오류를 반환합니다.
-
upsert
: 이 매개변수의 기본값은false
입니다.이 옵션의 값이
true
로 설정되고 지정된 필터 쿼리와 일치하는 문서가 없다고 가정합니다. 이 경우 이 메서드는 새 문서를 만듭니다.returnNewDocument
옵션의 값이true.
로 설정되지 않은 경우null
값(새 문서 삽입 후)을 반환합니다. 또는 이upsert
옵션의 값이true.
로 설정된 경우 이 메서드는 지정된 필터 쿼리와 일치하는 문서를 업데이트합니다. -
returnNewDocument
: 이 매개변수 유형은 부울입니다. 기본적으로 이 메서드는 원본 문서를 반환합니다.returnNewDocument
매개변수를 사용하고 해당 값을true
로 설정하여 업데이트된 문서를 반환하십시오. -
Collation
: 작업에 대한 collation 사용을 지정합니다. 이를 통해 사용자는 대소문자 및 악센트 표시에 대한 규칙과 같은 문자열 비교에 대한 언어별 규칙을 결정할 수 있습니다.이 매개변수의 유형은 문서입니다.
-
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()
메서드를 사용하여 포함된 문서의 값 업데이트
이 예에서는 아래 제공된 쿼리를 사용합니다.
db.student.findOneAndUpdate({name:"Hamza"},{$inc:{"score.Math":5}})
여기에서 포함된 문서의 수학
필드 값을 업데이트합니다. 수학
필드의 값이 5씩 증가합니다.
출력:
findOneAndUpdate()
메서드를 사용하여 일치하는 첫 번째 문서를 업데이트하고 업데이트된 문서 반환
이 예에서는 아래 제공된 쿼리를 사용합니다.
db.student.findOneAndUpdate({name:"Ali"},{$inc:{score:5}},{returnNewDocument:true})
여기에서 선택 기준(즉, name: "Ali"
)에 따라 새 문서(예: {$inc:{score:5}
})에 따라 첫 번째로 일치하는 문서를 업데이트합니다. 의 값 점수
필드가 5씩 증가합니다.
returnNewDocument
값을 true
로 설정했기 때문에 새로 업데이트된 문서를 반환합니다.
출력:
결론
이 MongoDB 자습서 기사의 도움을 통해 선택 기준과 일치하는 컬렉션의 첫 번째 일치 문서를 업데이트하는 데 사용되는 db.collection.findOneAndUpdate()
메서드를 사용하는 방법을 배웠습니다. 또한 이 방법을 사용하여 포함된 문서를 대체하고 다중 문서 트랜잭션에서도 사용할 수 있습니다.