Docs Menu
Docs Home
/
MongoDB Shell
/

スクリプトに外部ファイルとモジュールを含める

項目一覧

  • ローカル ファイルが必要
  • 組み込みモジュールが必要
  • npm モジュールが必要

重要

Node.js、モジュール、 require() の完全な説明 関数は、このチュートリアルの範囲外です。詳しくは、 Node.js のドキュメント を参照してください。

mongoshインタラクションでファイルとモジュールを使用するには、 require() 関数を使用します。

mongoshスクリプトでは、次のことを要求できます。

  • ローカル ファイル

  • Node.js 組み込みモジュール

  • External (npm) Node.js modules

追加の設定や構成なしで、 mongoshスクリプトで JavaScript ファイルを使用できます。

注意

mongosh では、 require()を使用してインポートされたファイルは実行されません。 代わりに、 mongoshはインポートされたファイルのすべてを現在の実行スコープに追加します。

現在の作業ディレクトリにあるtest.jsという名前のファイルを含めるには、次のいずれかのコマンドを使用します。

require('./tests.js')
var tests = require('./tests.js')

組み込みの Node.js モジュール( fs )を追加する設定や構成なしで、 の を使用します。mongosh

次の例では、以下のようなスクリプトを作成して実行します。

  • デフォルト ポートで実行されているローカル配置に接続します。

  • myDatabase.employeesコレクションにサンプル データを入力します。

  • fsモジュールを使用して、 myDatabase.employeesコレクションからemployee.jsonという名前のファイルにドキュメントを書込みます。

  1. 次の内容で employee-to-text-file.js という名前のファイルを作成します。

    const fs = require('fs');
    db = connect('mongodb://localhost/myDatabase');
    db.employees.insertMany( [
    { "name": "Alice", "department": "engineering" },
    { "name": "Bob", "department": "sales" },
    { "name": "Carol", "department": "finance" }
    ] )
    const document = db.employees.findOne();
    fs.writeFileSync('employee.json', JSON.stringify(document));
  2. employee-to-text-file.jsファイルを読み込んで実行するには、 mongoshから次のコマンドを実行します。

    load("employee-to-text-file.js")
  3. データが ファイルに書き込まれたことを確認するには、 employee.jsonファイルを開きます。

Node.js モジュール( npm からダウンロードしたものなど)を要求できます )。外部モジュールを使用するには、次のいずれかのモジュールをインストールする必要があります。

  • グローバル

  • 現在の作業ディレクトリのnode_modulesディレクトリ内。

Node.js モジュールには 2 つのパッケージ化標準があります。

パッケージング標準
require() との連携
CommonJS (CJS)
はい
ECMAScript Module (ES Module)
No

mongoshでは ES モジュールをrequire()できません。 ES モジュールの機能を使用する場合は、代わりに使用できる CommonJS バージョンがあるかどうかを確認してください。 詳しくは、以下を参照してください。

Tip

この構造を使用してリモート npm モジュールを要求できます。

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

例については、 index.js resumetokenを参照してください スニペットに含まれる文字列。

重要

この例を実行するには、 date-f node_modulesコマンド をインストールする必要があります グローバル、または現在の作業ディレクトリ内の ディレクトリ内のいずれかのモジュールに接続します。

次の例では、以下のようなスクリプトを作成して実行します。

  • デフォルト ポートで実行されているローカル配置に接続します。

  • myDatabase.cakeSalesコレクションにサンプル データを入力します。

  • date-fnd を使用 日付の形式を設定するモジュール。

  1. 次の内容で date-fns-formatting.js という名前のファイルを作成します。

    const formatDistance = require('date-fns/formatDistance')
    db = connect('mongodb://localhost/myDatabase');
    db.cakeSales.insertMany( [
    { _id: 0, type: "chocolate", orderDate: new Date("2020-05-18T14:10:30Z"),
    state: "CA", price: 13, quantity: 120 },
    { _id: 1, type: "chocolate", orderDate: new Date("2021-03-20T11:30:05Z"),
    state: "WA", price: 14, quantity: 140 },
    { _id: 2, type: "vanilla", orderDate: new Date("2021-01-11T06:31:15Z"),
    state: "CA", price: 12, quantity: 145 },
    { _id: 3, type: "vanilla", orderDate: new Date("2020-02-08T13:13:23Z"),
    state: "WA", price: 13, quantity: 104 },
    { _id: 4, type: "strawberry", orderDate: new Date("2019-05-18T16:09:01Z"),
    state: "CA", price: 41, quantity: 162 },
    { _id: 5, type: "strawberry", orderDate: new Date("2019-01-08T06:12:03Z"),
    state: "WA", price: 43, quantity: 134 }
    ] )
    const saleDate0 = db.cakeSales.findOne( { _id: 0 } ).orderDate
    const saleDate1 = db.cakeSales.findOne( { _id: 1 } ).orderDate
    const saleDateDistance0 = formatDistance(saleDate0, new Date(), { addSuffix: true })
    const saleDateDistance1 = formatDistance(saleDate1, new Date(), { addSuffix: true })
    print("{ _id: 0 } orderDate was " + saleDateDistance0)
    print("{ _id: 1 } orderDate was " + saleDateDistance1)
  2. date-fns-formatting.jsファイルを読み込んで実行するには、 mongoshから次のコマンドを実行します。

    load("date-fns-formatting.js")

    mongosh は、次のようなものを出力します。

    { _id: 0 } orderDate was over 1 year ago
    { _id: 1 } orderDate was 7 months ago

    出力は、例を実行する日付によって異なる場合があります。

戻る

スクリプトの書き込み (write)