중요
맵 리듀스는 MongoDB 5.0부터 더 이상 사용되지 않습니다.
MongoDB JavaScript 코드의 서버 측 실행을 수행하는 다음과 같은 연산자를 제공합니다.
$where문서를 쿼리하기 위해 JavaScript 표현식이나 함수를 평가하는 연산자입니다.사용자가 사용자 지정 집계 표현식을 정의할 수 있는
$accumulator및$function집계 작업입니다.
MongoDB Shell 로 .js 파일 실행
JavaScript(.js) 파일을 mongosh 에 지정하여 서버에서 파일을 실행할 수 있습니다. 이는 일괄 관리 작업을 수행하는 데 유용한 기술입니다. 서버에서 mongosh 를 실행하고 로컬 호스트 인터페이스를 통해 연결하면 지연 시간이 짧고 연결이 빠릅니다.
서버 측 JavaScript 비활성화
mongod 또는 mongos에 대한 JavaScript 의 모든 서버 측 실행을 비활성화하려면 다음 중 하나를 수행할 수 있습니다.
명령줄 에
--noscripting옵션을 전달합니다.mongod --noscripting및mongos --noscripting를 참조하세요.
행동
MongoDB의 자바스크립트
서버 측 메서드는 JavaScript 사용하지만, MongoDB 와의 대부분의 상호 작용은 JavaScript 사용하지 않고 대신 상호 작용하는 애플리케이션 의 언어 관용적 운전자 사용합니다.
동시성
동시성 정보는 개별 메서드 또는 연산자 설명서를 참조하세요. 동시성 테이블도 참조합니다.
지원되지 않는 배열 및 문자열 함수
MongoDB 6.0 은 서버 측 JavaScript, $accumulator, $function 및 $where 표현식에 사용되는 내부 JavaScript 엔진 을 MozJS-60 에서 MozJS-91 로 업그레이드합니다. MozJS-60 에 존재했던 사용 중단된 몇 가지 비표준 배열 및 string 함수가 MozJS-91에서 제거되었습니다.
Unavailable on ppc64le
MongoDB 9.0부터 서버 측 JavaScript ppc64le 아키텍처에서 사용할 수 없습니다. ppc64le의 mongod 및 mongos 바이너리에는 JavaScript 엔진 포함되어 있지 않습니다. 결과적으로$where, $accumulator, $function 및 맵 리듀스 작업은 해당 아키텍처에서 실패합니다. 구성 파일 설정 또는 명령줄 옵션으로 ppc64le에서 서버 측 JavaScript 활성화 할 수 없습니다.
이러한 작업을 실행 하려면 JavaScript 엔진 포함된 아키텍처의 배포서버 사용하세요. 서버 측 JavaScript 필요하지 않은 집계 파이프라인 단계 및 연산자를 사용하도록 작업을 다시 작성할 수도 있습니다.
날짜 작업에서 UTC 사용
MongoDB 9.0부터 서버 측 JavaScript mongod 호스팅하다 구역 에 관계없이 UTC로 로컬 Date 작업을 평가합니다. Date.prototype.getHours()와 같은 로컬 게터, 로컬 생성자 및 세터, 날짜를 문자열로 변환하는 작업은 모두 UTC를 사용합니다. 저장된 BSON 날짜 값은 변경되지 않으며, Date.prototype.getTime(), Date.prototype.toISOString() 및 getUTC*() 메서드도 변경되지 않습니다.
명명된 구역 의 날짜를 평가하려면 명시적 timezone 인수와 함께 $hour와 같은 집계 날짜 연산자 사용합니다. JavaScript 에서 로컬 Date 메서드를 사용하지 마세요. 업그레이드 지침 은 MongoDB 9의 호환성 변경 사항0을 참조하세요.
SELinux 고려 사항
SELinux를 사용하는 경우 서버 측 JavaScript 필요한 MongoDB 작업은 segfault 오류를 발생시킵니다. 서버 측 JavaScript 실행을 비활성화하려면 서버 측 JavaScript 비활성화를 참조하세요.