Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/
MongoDBマニュアル
/ /

{0 シェル 用のスクリプトの記述mongoshell

警告

次のドキュメントは、mongo MongoDB Server のダウンロード に含まれる シェルに関連しています。新しいMongoDB Shell(mongosh )の詳細については、 mongoshドキュメント を参照してください。

2 つの shell の違いを理解するには、「 mongo Shell とmongoshの比較 」を参照してください。

mongo shell のスクリプトは、MongoDB のデータを操作や管理操作を実行する JavaScript で記述できます。

このチュートリアルでは、 mongo shell を使用して MongoDB にアクセスする JavaScript の記述方法を紹介します。

mongo shell または JavaScript ファイルから、 Mongo()コンストラクタを使用してデータベース接続をインスタンス化できます。

new Mongo()
new Mongo(<host>)
new Mongo(<host:port>)

デフォルト ポートの localhost で実行中の MongoDB インスタンスへの新しい接続をインスタンス化し、 getDB()メソッドを使用してグローバルdb変数をmyDatabaseに設定する次の例えを考えてみます。

conn = new Mongo();
db = conn.getDB("myDatabase");

アクセス制御を適用する MongoDB インスタンスに接続する場合は、 db.auth()メソッドを使用して認証できます。

さらに、 connect()メソッドを使用して MongoDB インスタンスに接続できます。 次の例では、デフォルト以外のポート27020を使用してlocalhostで実行されている MongoDB インスタンスに接続し、グローバルdb変数を設定します。

db = connect("localhost:27020/myDatabase");

Tip

注意

バージョン4.2以降、 mongo shell は メソッドisInteractive()を提供し、 mongo shell が対話モードまたはスクリプト モードのどちらで実行されているかを示すブール値を返します。

mongo shell のスクリプトを作成する場合は、次の点を考慮してください。

  • dbグローバル変数を設定するには、 getDB()メソッドまたはconnect()メソッドを使用します。 データベース参照は、 db以外の変数に割り当てることができます。

  • mongo shell での書込み操作では、デフォルトで{ w: 1 }の書込み保証が使用されます。 一括操作を実行する場合は、 Bulk()メソッドを使用します。

  • シェルshell (例: JavaScript ファイル内のuse <dbname>show dbsなど)は、有効な JavaScript ではないためです。

    次の表は、最も一般的なmongo shellヘルパーをJavaScriptにマッピングします。

    shellヘルパー
    JavaScript と同等

    show dbs, show databases

    db.adminCommand('listDatabases')
    use <db>
    db = db.getSiblingDB('<db>')
    show collections
    db.getCollectionNames()
    show users
    db.getUsers()
    show roles
    db.getRoles({showBuiltinRoles: true})
    show log <logname>
    db.adminCommand({ 'getLog' : '<logname>' })
    show logs
    db.adminCommand({ 'getLog' : '*' })
    it
    cursor = db.collection.find()
    if ( cursor.hasNext() ){
    cursor.next();
    }
  • 対話モードでは、 mongo shell はすべてのカーソルの内容を含む操作の結果を出力します。 スクリプトでは、JavaScript print()関数または形式化された JSON を返すmongo固有のprintjson()関数を使用します。

    mongo shell スクリプトの結果カーソル内のすべての項目を出力するには、次のクローンを使用します。

    cursor = db.collection.find();
    while ( cursor.hasNext() ) {
    printjson( cursor.next() );
    }

システム プロンプトから、 mongo shell を使用して JavaScript を評価します。

--evalmongo次のように、 shell に オプションを使用して、shell に JavaScript フラグメントを渡します。

mongo test --eval "printjson(db.getCollectionNames())"

これにより、 localhostインターフェースのポート27017で実行されているmongodまたはmongosインスタンスに接続されているmongo shell を使用して、 db.getCollectionNames()の出力が返されます。

mongo shell に.jsファイルを指定すると、 mongoは JavaScript を直接実行します。 次の例で考えてみましょう。

mongo localhost:27017/test myjsfile.js

この操作では、ポート のmyjsfile.js mongoインターフェース経由でアクセス可能な インスタンスのtest データベース mongodに接続するlocalhost shell27017 で スクリプトを実行します。

MongoDBJavaScriptあるいは、Mongo() コンストラクターを使用して ファイル内で 接続パラメータを指定することもできます。詳細については、「新しい接続の開始 」を参照してください。

次のように、 関数を使用して、.jsmongoshload() 内から ファイルを実行できます。

load("myjstest.js")

この関数は、 myjstest.jsファイルを読み込んで実行します。

load()メソッドは相対パスと絶対パスを受け入れます。 mongoshの現在の作業ディレクトリが/data/dbで、かつmyjstest.js/data/db/scriptsディレクトリに存在する場合、 mongosh内の次の呼び出しは同等になります。

load("scripts/myjstest.js")
load("/data/db/scripts/myjstest.js")

注意

There is no search path for the load() function. 目的のスクリプトが現在の作業ディレクトリまたは指定された絶対パスにない場合、 mongoshはファイルにアクセスできません。

戻る

mongo shell ヘルプにアクセスする

項目一覧