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

MongoDB에서 저장된 JavaScript를 다루는 방법

MongoDB에서 저장된 JavaScript 다루기

MongoDB는 서버 측에서 실행할 JavaScript 함수를 데이터베이스 안에 직접 저장할 수 있습니다. 저장된 함수는 system.js라는 특수 컬렉션에 보관되며, db.system.js.save() 메서드를 사용해 등록합니다.

함수 저장 문법

db.system.js.save({
    _id: "anyFunctionName",
    value: function (returnValue) {
        return 'yourMessage ' + returnValue;
    }
})

_id 필드에는 함수 이름을, value 필드에는 실제로 실행할 함수 본문을 지정합니다.

실제 구현 예제

다음은 문자열과 전달받은 값을 함께 반환하는 간단한 함수를 저장하는 쿼리입니다.

> db.system.js.save({
...     _id: "returnValue",
...     value: function (data) {
...         return 'The value==== ' + data;
...     }
... })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

nModified : 1이 반환되면 함수가 정상적으로 저장된 것입니다.

저장된 함수 호출하기

저장한 함수를 실제로 호출해 데이터를 출력하려면 db.eval()을 사용합니다.

> db.eval("returnValue(20)")
WARNING: db.eval is deprecated

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

The value==== 20

주의 사항

실행 결과에서 확인할 수 있듯이 db.eval()은 더 이상 권장되지 않는(deprecated) 기능입니다. 보안과 성능상의 문제로 인해 최신 버전의 MongoDB에서는 사용을 피하는 것이 좋습니다. 대신 애플리케이션 측에서 로직을 처리하거나, 집계 파이프라인(aggregation pipeline)과 $function 연산자 같은 대안을 활용하는 것이 바람직합니다.