Computer >> 컴퓨터 >  >> 프로그래밍 >> MongoDB

MongoDB 저장 프로시저(Stored Procedure) 생성 방법 완벽 가이드

관계형 데이터베이스와 달리 MongoDB는 전통적인 의미의 저장 프로시저를 지원하지 않지만, system.js 컬렉션에 JavaScript 함수를 저장하는 방식으로 유사한 기능을 구현할 수 있습니다. 이렇게 저장된 함수는 서버 측에서 실행되어 재사용 가능한 비즈니스 로직을 캡슐화하는 데 활용됩니다.

MongoDB 저장 프로시저 생성 문법

MongoDB에서 저장 프로시저를 만들려면 db.system.js.save() 메서드를 사용합니다. 기본 문법은 다음과 같습니다.

db.system.js.save
(
    {
        _id: "저장프로시저이름",
        value: function(인자1, ....N)
        {
            실행문1,
            .
            .
            N
        }
    }
);

여기서 _id는 저장 프로시저의 고유 이름 역할을 하며, value 필드에는 실제로 실행될 JavaScript 함수를 정의합니다.

저장 프로시저 생성 예제

위 문법을 실제로 적용해 보겠습니다. 두 개의 값을 더하는 간단한 함수를 저장 프로시저로 등록하는 쿼리는 다음과 같습니다.

> db.system.js.save
(
    {
        _id: "addTwoValue",
        value: function(a, b)
        {
            return a + b
        }
    }
);

쿼리가 성공적으로 실행되면 다음과 같은 결과가 출력됩니다.

WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "addTwoValue" })

출력 결과에서 nUpserted : 1은 새로운 함수가 system.js 컬렉션에 성공적으로 저장되었음을 의미합니다.

저장 프로시저 호출하기

생성된 저장 프로시저는 db.eval() 메서드를 사용하여 호출할 수 있습니다. 호출 쿼리는 다음과 같습니다.

> db.eval("return addTwoValue(100,25)");
125

실행 결과로 두 인자 100과 25가 더해진 값인 125가 반환되는 것을 확인할 수 있습니다.

참고 사항

db.eval()은 MongoDB 3.0부터 deprecated(사용 중단 권고)되었으며, MongoDB 4.2 버전부터는 완전히 제거되었습니다. 최신 버전의 MongoDB에서는 보안상의 이유로 서버 측 JavaScript 실행이 기본적으로 비활성화되어 있으므로, 애플리케이션 로직 내에서 함수를 처리하거나 Aggregation Pipeline을 활용하는 방식을 권장합니다.