MongoDB の 基本的 な 使い方

0 件のコメント

MongoDB の 使い方を サーバー起動からアクセス、操作に至るまでを一通りまとめました。 この記事に目を通せば一通りの基本操作ができるようになるハズ!

Oracle と MongoDB の違い

MongoDB は いわゆる NoSQL と呼ばれる データベース です。 JSON のような ドキュメント と呼ばれるデータを コレクション と呼ばれるカタマリで保持するようになっています。 旧来からある RDB の代表として Excel および Oracle と MongoDB との名称の関連付けは以下のようになります。

Excel Oracle MongoDB
ブック Schema Database
シート Table Collection
Row Document
Column Field
セル Field Value

サーバー

サーバーコマンドは mongod になります。 ここでは mongod を使ってサーバーの起動/終了を行うコマンドを見ていきます。 ここで取り上げない mongod コマンド のその他オプションについては 「MongoDB コマンド "mongod" の 使い方」 を参照してください。

サーバー起動/終了

  • サーバー起動

    データベースファイルを保存する場所が「C:\mongodb\server\data」に準備されている前提とします。

    コマンドプロンプトを立ち上げて以下のコマンドを実行すると MongoDB サーバー 起動 できます。

    mongod --dbpath "C:\mongodb\server\data"
    
  • サーバー終了

    起動中のコマンドプロンプト上で Ctrl + C を入力すると shutdown コマンドが発行され、MongoDB が終了されます。

クライアント

上記の手順で MongoDB を立ち上げた状態で、クライアントコマンド mongo を利用して接続してみます。 MongoDB サーバー と 同一サーバー で接続を行う場合、上記のサーバー用に立ち上げたコマンドプロンプトとは別にもう一つ立ち上げて接続を行います。 ここで取り上げない mongo のその他オプションについては 「MongoDB コマンド "mongo" の 使い方」 を参照してください。

サーバー接続/切断

  • サーバー接続

    mongo
    

    MongoDB を起動している端末と同一端末の場合、コマンドプロンプトを立ち上げて以下のコマンドを実行すると接続できます。 異なる端末の場合 --host <ホスト名> オプションで接続先を指定します。

  • サーバー切断

    > exit
    

    MongoDB 接続 を切断する場合、 Ctrl + C を入力すると切断できます。 また、以下のコマンドを実行することでも切断できます。

データベース作成/一覧表示/変更/削除

  • データベース作成

    > use sample_database
    

    指定したデータベースへ接続します。 データベースが存在しなければ作成します。

  • データベースの一覧表示

    > show dbs
    

    デフォルトでは adminlocaltest の3データベースが存在しています。

    use <データベース名> を行ってすぐ一覧表示を行っても作成したデータベースは表示されません。 show dbs で表示されるようになるには、最低でも1件以上のデータ登録が必要です。

  • データベース名の変更

    > db.copyDatabase('old_database', 'new_database')
    > use old_database
    > db.dropDatabase()
    

    残念ながらデータベース名を変更するコマンドは存在しないため、 旧データベースを新データベースにコピーして旧データベースを削除する手順になります。

  • データベース削除

    > use sample_database
    > db.dropDatabase();
    

    削除したいデータベースに接続して db.dropDatabase() を実行すると削除できます。

コレクション作成/一覧表示/変更/削除

  • コレクションの作成

    > db.createCollection(products);
    

    引数に指定した名前のコレクションを作成します。

  • コレクションの一覧表示

    > show collections
    

    現在接続中のデータベースに含まれるコレクション一覧を表示します。

  • コレクション名の変更

    > db.old_collection_name.renameCollection(new_collection_name, true);
    

    old_collection_name から ,new_collection_name に名前を変更します。 また、変更する際、古いコレクション old_collection_name を削除する場合、第2引数 に trueを指定します。

  • コレクションの削除

    > db.products.drop();
    

    指定したコレクションを削除します。

ドキュメント挿入/取得/更新/削除

  • ドキュメント挿入

    > db.products.insert(
            {name: 'sample book', price: 1280}
        )
    

    指定したコレクションにドキュメントを挿入します。 insert を行うと自動的に _id フィールド が追加されます。

  • ドキュメント取得

    > db.products.find(
            {name: {$eq: 'sample book'}}
        )
    

    引数に指定するクエリの基本的な書式は { フィールド: { オペレーター: }} のようになります。 オペレーターについては MongoDB - Query and Projection Operators に記載があります。 なお、引数指定なしだと全件取得します。

  • ドキュメント更新

    > db.products.update(
            {name: {$eq: 'sample book'}},
            {$set: {name: 'Hack MongoDB'}},
            {upsert: false, multi: true}
        )
    

    第1引数で指定した条件にマッチするドキュメントを、第2引数で指定したドキュメント内容で更新します。 第3引数のオブジェクトで指定している upsert は「条件に一致するドキュメントが見つからなかった場合に挿入するかどうか」を指定しており、 multi は「条件に一致するドキュメントすべてを更新対象とするかどうか」を指定しています。

  • ドキュメント削除

    > db.products.remove(
            {name: {$eq: 'sample book'}}
        )
    

    第1引数で指定したクエリにマッチするドキュメントをすべて削除します。

参考記事