Vapor 및 MongoKitten을 통해 MongoDB에서 자동 증가 필드를 업데이트하려고합니다. 꼭 고유 한 키일 필요는 없습니다.
목표는 $ inc 수정자를 사용하여 단일 원자 연산으로 만들고 반환 된 증가 된 결과를 모두 한 번에 가져 오는 것입니다.
MongoKitten에서이 작업을 지원합니까?
달성 할 수 있습니까? findAndUpdate 메서드를 사용하여?
예인 경우이 구문의 예가 무엇입니까?
Vapor 및 MongoKitten을 통해 MongoDB에서 자동 증가 필드를 업데이트하려고합니다. 꼭 고유 한 키일 필요는 없습니다.
목표는 $ inc 수정자를 사용하여 단일 원자 연산으로 만들고 반환 된 증가 된 결과를 모두 한 번에 가져 오는 것입니다.
MongoKitten에서이 작업을 지원합니까?
달성 할 수 있습니까? findAndUpdate 메서드를 사용하여?
예인 경우이 구문의 예가 무엇입니까?
MongoKitten을 사용하면 Collection에서 findAndUpdate
함수를 사용하여이 작업을 수행 할 수 있습니다. 입력은 (컬렉션의 모든 항목을 증가시키지 않는 한) 쿼리 여야하고 업데이트 문서에 대해 with
인수 여야합니다. 업데이트 문서 내부
// The query used to find the document to increment
let query: Query = "_id" == ...
, 당신은 사용할 수있는
$inc operator과 같이 :
let updateDoc: Document = ["$inc": ["myKey": 1]]
이 1 개
let updated = try collection.findAndUpdate(query, with: updateDoc)
updated
문서하여 증가하여 "있는 MyKey"을 업데이트 할 것입니다 을 업데이트하기 전에을 업데이트하십시오. 따라서 myKey
의 값이 3 인 경우에는 4로 변경됩니다. 이 쿼리에서는 값이 3
인 문서를 받게됩니다.
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)
마지막으로 (.old
에 기본값)를 returnedDocument
인수를 변경할 수 있습니다이를 변경하거나 당신이 투사을 추가하는 것을 고려한다 일반적으로 반환 된 결과를 제한 찾을 수 있습니다. Projections은 당신이하고 관심이 없습니다.
이 예제의 myKey
정수 값 인 반환하는 경우에만 관련 분야 (들)을 보장하기 위해 findAndUpdate
로 사용할 수 있습니다 필드 데이터베이스에 나타냅니다.
let updated = try collection.findAndUpdate(query, with: updateDoc, returnedDocument: .new)