シェル 概要

based on v49 (2010/10/04 更新) - オリジナル

シェルの起動

このシェルは、標準的なMongoDBの配布物に含まれます。シェルを起動するためには、配布物のrootディレクトリに入り以下のようにタイプします。

./bin/mongo

mongo_distribution_root/binPATH に入れると、 mongo だけでどこからでもタイプでき便利かもしれません。

パラメータ無しで起動すると、ローカルマシンのデフォルトポート(27017)で動いている "test" という名前のデータベースにアクセスしにいきます。 db コマンドでどのDBに接続しているか確認できます。

./mongo
type "help" for help
> db
test

mongo にオプションとして、サーバーの場所、ポート、接続するデータベースも設定できます。

./mongo foo ローカルマシンの foo データベースに接続
./mongo 192.168.13.7/foo 192.168.13.7 の {{foo}}データベースに接続
./mongo dbserver.mydomain.com/foo dbserver.mydomain.com の foo データベースに接続
./mongo 192.168.13.7:9999/foo 192.168.13.7 の port 9999 の foo データベースに接続

接続

コマンドラインから接続しなかった場合には、次のコマンドで接続できます。

conn = new Mongo(host);
db = conn.getDB(dbname);
db.auth(username,password);

host は接続したいホスト名か、アドレスを指定できます(例: "192.168.13.7") 。また、ポートを指定することもできます(例: "192.168.13.7:9999")。
hostはローカルマシンに接続する場合省略できます(例: conn = new Mongo())。
他の方法として、 connect ヘルパーを使うこともできます。

> db = connect("localhost:27020/mytestdb"); // 標準的で無いportに接続する例 #

基本的なコマンド

次のコマンドは、存在するデータベースとコレクションの情報を提供する3つの基本的なコマンドです。

show dbs 接続しているサーバ上のすべてのデータベースを表示
use db_name db_name 切り替え
show collections 現在のデータベースのすべてのコレクションを表示

クエリ

mongo はデータベースとやりとりするためにJavasScript APIを使います。 mongo は完全なJavaScriptシェルでもあるので、 db 現在接続しているデータベースの変数です。
コレクションに対して、クエリするために、 db のプロパティとしてコレクションの名前を指定し、そして find() メソッドを呼びます。 例:

db.foo.find();

これは、 foo コレクションの最初の10オブジェクトを表示します。 it をfind()の後につけると、次の連続する10オブジェクトを表示します。

shellBatchSize を追加することでこれを変更できます。
DBQuery.shellBatchSize = #
シェルがコレクション名を受け付けないときは(たとえば、コレクション名が数字で始まっていたり、スペースを含んでいたり)、
db['foo'].find()

を代わりに使ってください。

データの追加

データベースにデータを挿入するには、単純にJavaScriptのオブジェクトを作成し、 save() メソッドを呼びます。例えば、 {name: "sara"} というオブジェクトを、 foo というコレクションに保存するには、

db.foo.save({ name : "sara"});

MongoDB は暗黙的に、存在しないコレクションを作成します。

データの修正

誰かの住所を変更したいと仮定します。次のような mongo コマンドでできます。

person = db.people.findOne( { name : "sara" } );
person.city = "New York";
db.people.save( person );

データの削除

db.foo.drop() foo コレクション全部を削除します
db.foo.remove() コレクションの中のすべてのオブジェクトを削除します
db.foo.remove( { name : "sara" } ) name が {{sara} のオブジェクトをすべて削除します

インデックス

db.foo.getIndexKeys() インデックスを持ったすべてのフィールドを取得します
db.foo.ensureIndex({ _field_ : 1 }) 存在していない場合、 field にインデックスを作成します。

行の継続

一行に、開いたままの '(' や '{' がある場合、シェルは評価する前にさらなら入力を求めます。

> function f() {
... x = 1;
... }
>

Ctrl-C で "..." モードから抜け、行入力を中断できます。

参照


Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.

These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group.

blog comments powered by Disqus