MongoDBの基本操作メモ
MongoDBの基本操作(コレクション作成, インサート, アップデート, デリート)のメモ。
起動から基本操作
コマンドラインからMongoクライアントツールを起動
> mongo
データベース一覧表示
> show dbs;
データベース選択
特にDBを作成する指示がなくてもDBを変更できて、保存した時に作成してくれる。
> use hogedb;
コレクション操作
ややこしいが、リレーショナルDBでのテーブルをMongoDBではコレクションと呼ぶらしい。
これも明示的な指示をせずに中身を適当にインサートするだけでコレクションも作成されるけど作成方法のメモ。
collection作成
> db.createcollection("testcollection");
collection一覧表示
> show collections;
ドキュメント追加・保存
MongoDBではデータの中身をドキュメントと呼ぶ。
普通の文字列保存
> db.testcollection.save( {"data" : "save_data"} );
複数ドキュメントの保存
> testcollection.save( {"name" : "Laddy", "age" : 28} );
配列保存
> db.testcollection.save( {"number" : [1, 2, 3, 4] } );
ネストデータ保存
> db.testcollection.save( {"list" : {"data1" : "one", "data2" : "two"} } );
ドキュメント検索
ドキュメントを取得
> db.testcollection.find();
{ "_id" : ObjectId("50e023cf1d5b651f6b93ef84"), "data" : "save_data" }
{ "_id" : ObjectId("50e023fe1d5b651f6b93ef85"), "name" : "Laddy", "age" : 28 }
{ "_id" : ObjectId("50e024831d5b651f6b93ef86"), "number" : [ 1, 2, 3, 4 ] }
{ "_id" : ObjectId("50e024cf1d5b651f6b93ef87"), "list" : { "data1" : "one", "data2" : "two" } }
キーの値で検索
> db.testcollection.find( { "name" : "Laddy"} );
{ "_id" : ObjectId("50e023fe1d5b651f6b93ef85"), "name" : "Laddy", "age" : 28 }
ネストしたデータの検索(キーの値を.でつなげる)
> db.testcollection.find( {"list.data1" : "one"} );
{ "_id" : ObjectId("50e024cf1d5b651f6b93ef87"), "list" : { "data1" : "one", "data2" : "two" } }
配列の検索(配列内のデータどれかに該当すれば表示される)
> db.testcollection.find( {"number" : 2} );
{ "_id" : ObjectId("50e024831d5b651f6b93ef86"), "number" : [ 1, 2, 3, 4 ] }
> db.testcollection.find( {"number" : 1} );
{ "_id" : ObjectId("50e024831d5b651f6b93ef86"), "number" : [ 1, 2, 3, 4 ] }
データ更新
db.testcollection.update( 検索対象, 更新内容, アップサートフラグ, 複数アップデートフラグ );
updateを行う場合、引数によって挙動ががらっと変わるので注意。
- どれをどう更新するかが1と2引数
- 3引数: trueの場合更新するデータがあれば更新して無ければインサート
逆にfalseの場合にはupdateはするけどインサートはしない - 4引数: trueの場合複数の該当するドキュメントに対してアップデートを行う
シンプルなupdate(対象は最初に見つかったドキュメントのみ)
> db.testcollection.update( { name : "Laddy" }, { age : 30 } );
検索対象がなければインサートを行うupdate
> db.testcollection.update({"hogehoge":12}, {"hogehoge":11}, true)
複数のドキュメント対象のupdate
> db.testcollection.update({"data":"save_data"},{"data":"updated"},false,true);
multi update only works with $ operators
エラーが出ました。複数のドキュメントに対してupdateする場合には $ オペレータを使わないといけないらしいです。
> db.testcollection.update(
{"data":"updated"},
{$set:{"data":0}},
false,
true
);
ドキュメント削除
指定ドキュメント削除
> db.testcollection.remove({"data":0});
全ドキュメント削除
> db.testcollection.remove();
ロジックを利用したデータ操作
// 10回データを入力
> for(var i = 0; i < 10; i++){
... db.testcollection.save({"insert_data":i});
... }
> db.testcollection.find();
{ "_id" : ObjectId("50e023cf1d5b651f6b93ef84"), "data" : "save_data" }
{ "_id" : ObjectId("50e023fe1d5b651f6b93ef85"), "name" : "Laddy", "age" : 28 }
{ "_id" : ObjectId("50e024831d5b651f6b93ef86"), "number" : [ 1, 2, 3, 4 ] }
{ "_id" : ObjectId("50e024cf1d5b651f6b93ef87"), "list" : { "data1" : "one", "data2" : "two" } }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef89"), "insert_data" : 0 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8a"), "insert_data" : 1 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8b"), "insert_data" : 2 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8c"), "insert_data" : 3 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8d"), "insert_data" : 4 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8e"), "insert_data" : 5 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef8f"), "insert_data" : 6 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef90"), "insert_data" : 7 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef91"), "insert_data" : 8 }
{ "_id" : ObjectId("50e03aeb1d5b651f6b93ef92"), "insert_data" : 9 }
-
前の記事
HTML5 localStrage機能を使ってメモ帳のようなものを作成 2012.12.26
-
次の記事
ubuntu12.10へMongoDBのインストール 2013.01.05