네, MongoDB에서 findAndModify() 메서드를 사용하면 증가 연산의 결과를 바로 반환받을 수 있습니다. 일반적인 update()는 업데이트 결과를 반환하지 않지만, findAndModify()에 new: true 옵션을 지정하면 수정된 이후의 문서를 그대로 받아볼 수 있습니다.
1. 테스트용 컬렉션 생성
먼저 문서 하나가 포함된 컬렉션을 생성해 보겠습니다.
> db.returnResultOfIncementDemo.insertOne({"PlayerScore":98});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd3c292edc6604c74817cda")
}2. 컬렉션의 모든 문서 조회하기
다음은 find() 메서드를 사용하여 컬렉션에 저장된 모든 문서를 확인하는 쿼리입니다.
> db.returnResultOfIncementDemo.find();
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
{ "_id" : ObjectId("5cd3c292edc6604c74817cda"), "PlayerScore" : 98 }3. 증가 연산 수행 후 결과 반환받기
이제 findAndModify()를 사용하여 PlayerScore 필드를 2만큼 증가시키고, 동시에 업데이트된 문서를 반환받아 보겠습니다. 핵심은 new: true 옵션으로, 이 옵션이 없으면 업데이트 이전의 문서가 반환됩니다.
> db.returnResultOfIncementDemo.findAndModify({
... query:{},
... update: { $inc: {PlayerScore: 2 }},
... new: true
... });실행 결과, 증가 연산이 적용된 최신 문서가 출력되는 것을 확인할 수 있습니다.
{ "_id" : ObjectId("5cd3c292edc6604c74817cda"), "PlayerScore" : 100 }정리
MongoDB에서 $inc 연산자로 값을 증가시킨 뒤 그 결과를 즉시 확인하고 싶다면, update() 대신 findAndModify()를 사용하고 new: true 옵션을 함께 지정하면 됩니다. 이 방식은 카운터, 좋아요 수, 점수 집계처럼 업데이트된 값을 곧바로 활용해야 하는 경우에 특히 유용합니다.