Docs Menu
Docs Home
/
MongoDB Shell
/

스니펫 생성 및 공유

이 페이지의 내용

  • 스니펫 패키지 생성
  • 스니펫 게시
  • 새 스니펫 패키지 설치
  • MongoDB Community에 스니펫 패키지 기여

경고

실험적 기능

이는 실험적인 기능입니다. MongoDB는 스니펫을 지원하지 않습니다. 이 기능은 사전 통지 없이 변경되거나 제거될 수 있습니다.

버그는 예상되지 않지만, 버그가 발생하면 Github 리포지토리 에서 문제를 제기하세요. 이 프로젝트의 경우.

에서 데이터를 조작하거나 관리 작업을 수행하는 스크립트를 mongosh 작성할있습니다. 스크립트를 스니펫으로 패키징하면 조직 내 또는 MongoDB 사용자 커뮤니티 전반에서 스크립트를 쉽게 공유할 수 있습니다.

이 페이지에서는 다음을 설명합니다.

  • 스니펫 패키지를 준비합니다.

  • 스니펫 패키지를 레지스트리에 게시합니다.

스니펫 패키지의 스크립트 및 메타데이터 파일 예시는 GitHub에서 커뮤니티 스니펫 레지스트리의 스니펫을 참조하세요.

커뮤니티 레지스트리 에 스니펫을 제출할 계획인 경우 MongoDB Community에 스니펫패키지 기여하기의 정보를 반드시 검토하세요.

이 섹션의 단계에서는 스크립트 패키징에 중점을 둡니다. 스크립트 작성에 대한 자세한 내용은 스크립트 작성을 참조하세요.

1

커뮤니티 리포지토리에 기여할 계획이라면 스니펫 프로젝트 리포지토리를 포크하세요.

비공개 리포지토리를 만들려는 경우 커뮤니티 리포지토리를 포크할 필요는 없지만 다음 단계를 진행하면서 유사한 디렉토리 구조를 수동으로 다시 만들어야 합니다.

2

포크된 리포지토리의 snippets 디렉토리 아래에 스니펫 패키지의 디렉토리를 만듭니다. 이 디렉토리에는 스크립트용 코드와 여러 메타데이터 파일이 포함됩니다.

이 예에서는 두 개의 스니펫 패키지decrypt-cardsupdate-auth 에 대한 디렉토리를 보여줍니다.커뮤니티 스니펫 의 콘텐츠 디렉토리는 명확성을 위해 생략되었습니다.

mongo-snippets
|
├── scripts
│   ├── make-index.js
│   └── show-index.js
└── snippets
├── analyze-schema
├── decrypt-cards
│   ├── LICENSE-Community.txt
│   ├── README.md
│   ├── error-matchers.js
│   ├── index.js
│   └── package.json
├── mock-collection
├── mongocompat
├── resumetoken
├── spawn-mongod
└── update-auth
├── LICENSE
├── README.md
├── index.js
└── package.json
3

README.md를 만듭니다. README.md에서는 코드를 사용하는 방법을 설명합니다. 이 파일은 사용자가 스니펫에 snippet help를 입력하면 표시됩니다.

4

파일을 만듭니다. 나중에 라이선스 식별자 문자열을 입력해야 LICENSE 하므로 SPDX 라이선스 목록에서 라이선스를 선택하는 것이 좋습니다.

5

index.js 파일을 만듭니다.

  • 이 파일에는 mongosh 콘솔에 노출되는 코드의 진입점이 포함되어 있습니다.

  • 스크립트는 JavaScript로 작성되었으며 새 함수를 정의합니다.

  • 스크립트는 단일 파일 또는 여러 파일에 있을 수 있습니다.

  • 스크립트는 다른 파일과 로컬 또는 원격 npm 모듈을 호출할 수 있습니다. 원격 npm 모듈을 require() 하려면 구성을 사용합니다.

    const localRequire = require('module').createRequire(__filename);)

    예시로 resumetoken 스니펫의 index.js를 참조하세요.

  • index.js package.json에서 참조됩니다.

  • MongoDB 리포지토리에 예제 코드가 있습니다.

기존 스크립트가 있는 경우 이름을 index.js 으로 바꾸거나 index.js 파일을 만들어 로드합니다. index.js 다른 스크립트를 로드하는 파일의 예는 다음을 참조 하세요.커뮤니티 리포지토리에 있습니다.

package.json 패키지 레지스트리가 스니펫을 관리하는 데 사용하는 메타데이터가 포함되어 있습니다.

최소 package.json 파일은 다음과 같습니다.

{
"name": "@mongosh/snippet-resumetoken",
"snippetName": "resumetoken",
"version": "1.0.2",
"description": "Resume token decoder script",
"main": "index.js",
"license": "Apache-2.0",
"publishConfig": {
"access": "public"
}
}

매개변수는 다음과 같습니다.

필드
설명
"name"
스니펫이 포함된 npm 패키지입니다.
"snippetName"
스니펫 이름입니다. 이는 install 과 같은 명령에 사용되는 이름입니다.
"번역"
패키지 버전입니다. 이 값은 스니펫을 업데이트할 때 증가해야 합니다.
"description"
스니펫의 기능에 대한 간략한 메모입니다. 설명이 50자 또는 60자를 초과하면 일부 스니펫 명령에서 표시 문제가 발생할 수 있습니다.
"main"
코드의 시작점인 index.js입니다. 다른 파일의 함수는 mongosh shell에서도 사용할 수 있도록 범위를 지정할 수 있습니다.
"licens"
코드 사용자를 위한 라이선스입니다. 공유 레지스트리에 기여하려면 라이선스가 SPDX 라이선스 목록 에 있어야 합니다. . MongoDB 기여자 계약도 참조하세요.
"publishConfig"
이 값은 스니펫 패키지에 대한 액세스를 제어하는 데 사용됩니다. public이 일반적이지만 npm은 다른 옵션도 마찬가지로 제공합니다.

이 코드를 사용하여 스켈레톤 package.json 파일을 만듭니다. 파일을 편집하고 각 UPDATE를 바꿔서 스니펫 패키지의 값을 삽입합니다.

{
"name": "@UPDATE/UPDATE",
"snippetName": "UPDATE",
"version": "UPDATE",
"description": "UPDATE",
"main": "UPDATE",
"license": "UPDATE",
"publishConfig": {
"access": "UPDATE"
}
}

리포지토리에는 파일의 몇 가지 예가 package.json MongoDB Github 있습니다.

MongoDB는 npm을 패키지 레지스트리로 사용합니다.

npm은 package.json 파일을 사용하여 패키지를 관리합니다. npm 패키지 설명서 를 package.json참조하세요. 에 대한 자세한 내용은 을(를) 참조하세요.

스니펫을 공유하려면 스니펫 패키지를 레지스트리에 게시해야 합니다. 패키지에는 다음이 포함됩니다.

파일이 완성되면 다음 단계에 따라 스니펫 패키지를 만들고 게시합니다.

1

레지스트리 인덱스 파일은 스니펫 코드가 포함된 index.js 파일과 동일하지 않습니다. 레지스트리 인덱스 파일 index.bson.br에는 레지스트리에 있는 스니펫 패키지에 대한 메타데이터가 포함되어 있습니다.

레지스트리 인덱스 파일은 사용하려면 업로드하기 전에 압축해야 합니다. make-index.js 스크립트 디렉토리의 유틸리티는 스니펫 소스 디렉토리를 안내하여 레지스트리 인덱스 파일을 생성하는 데 필요한 정보를 수집합니다. 레지스트리 인덱스 파일을 만든 후 make-index.js 스크립트도 압축합니다.

make-index.js 실행 디렉토리에서 mongo-snippets 인덱스를 생성합니다.

node ./scripts/make-index.js

이 스크립트의 출력 은 레지스트리 인덱스 파일, index.bson.br.

show-index.js 를 사용할 수 있습니다. 압축된 레지스트리 인덱스 파일을 봅니다.

레지스트리 인덱스를 만드는 데 make-index.js 를 사용하는 것이 선호되는 방법이지만 레지스트리 인덱스를 수동으로 만들 수도 있습니다.

2

스니펫과 레지스트리 인덱스 파일을 GitHub 리포지토리에 커밋합니다.

3

npm 레지스트리에 변경 사항을 게시합니다.

npm publish --access public

다음 단계에 따라 새 스니펫 패키지를 설치합니다.

1

로컬 mongosh에서 스니펫 메타데이터를 새로 고침합니다.

snippet refresh
2

스니펫을 설치합니다.

snippet install YOUR_NEW_SNIPPET

다른 MongoDB 사용자에게 유용할 수 있는 코드 스니펫을 작성했다면 Github에 호스팅된 커뮤니티 리포지토리에 기여하도록 초대됩니다.

공유 MongoDB 리포지토리에 스니펫을 제출하려면 다음을 수행합니다.

1

MongoDB 기여자 계약을 읽고 완료합니다.

2

GitHub에서 스니펫 프로젝트 리포지토리 포크 및 복제합니다.

3

스니펫/ 아래에 코드를 저장할 새 디렉토리를 추가합니다. . 설명이 포함된 이름을 지정합니다.

4

스니펫 패키지를 만듭니다. 다음 파일이 포함되어 있는지 확인합니다.

  • package.json

  • index.js

  • README.md

  • LICENSE

레지스트리 인덱스 파일을 만들 필요는 없습니다. 스니펫 패키지가 수락되면 MongoDB는 레지스트리 인덱스 파일을 업데이트합니다.

5

변경 사항을 GitHub 리포지토리에 커밋합니다.

6

스니펫 프로젝트 리포지토리에대해 pull 요청을 엽니다.

MongoDB가 pull 요청을 검토합니다. 수락되면 다음이 수행됩니다.

  • 코드를 GitHub 리포지토리에 병합합니다.

  • npm 레지스트리에 게시합니다.

  • 스니펫 인덱스에 추가합니다.

돌아가기

콘솔에서 스니펫 사용