自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

2013年10月13日日曜日

MongoDB基本使用

今日はドキュメント向けのデータベースMongoDBをいろいろと触りました、試したコマンドをメモします。

まず結論から言うと、MongoDBは本当に面白いデータベースです、今後のサイト構築は使うでしょう。

#mongodbシェルに入る
$mongo
#現在DB一覧
show dbs;
#利用DBに切り替える
use local
use blog_db;
#コレクション作成(テーブル)
db.createCollection("users");
show dbs;
#dbコマンドヘルプ
db.help();
#現在DB状態
db.stats();
#現在DB削除
db.dropDatabase();
#DB一覧
show dbs;

use blog_db;
db.createCollection("posts");
#コレクション一覧
show collections;
#コレクション削除
db.users.drop();
#コレクションリネーム
db.posts.renameCollection("threads");
#mongodbシェル終了
exit

#blog_dbに入る
$mongo blog_db
#コレクション一覧
show collections;
#usersコレクションにデータを追加
db.users.insert({"name":"koma","address":"tokyo","point":100});
#usersコレクションデータ検索
db.users.find();
#usersコレクションに違うスキマーデータを追加
db.users.insert({"name":"xiaoma", "skill":["linux","unix","mac os"]});
db.users.find();
#usersコレクション削除
db.users.remove();
db.users.find();

show collections;
db.users.find();
#大量データ追加(javascriptで)
for(var i = 0; i < 10; i++) {
db.users.insert({"name":"user-" + i, "group": i%3, "point": Math.floor(Math.random() * 100)});
}
db.users.find();

#検索条件付き(group=1)
db.users.find({"group":1});
#検索項目指定(name)
db.users.find({"group":1}, {"name":true});
#検索条件(group<>1)
db.users.find({"group":{$ne:1}}); //1以外を
#検索条件(point>40)
db.users.find({"point":{$gt:40}});
$gt >
$gte >=
$lt <
$lte <=
#検索条件(point>40 and point<60)
db.users.find({"point":{&gt:40, &lt:60}});
#検索条件(正規表現)
db.users.find({"name":{$regex:/user-[0-4]/i}});
#検索結果並び替え(point asc)
db.users.find().sort({"point":1}); // 1=asc;-1:desc
#SELECT TOP 1
db.users.findOne();
#検索件数制限(最初の3件)
db.users.find().limit(3);
#検索件数制限(3個目から3件)
db.users.find().skip(2).limit(3);
#検索件数
db.users.find().count();
#SELECT DISTINCT group
db.users.distinct("group");
#SELECT IN
db.users.find({"name":{$in:["user-3", "user-7"]}}); //in
#SELECT NOT IN
db.users.find({"name":{$nin:["user-3", "user-7"]}}); //not in
#データ追加
db.users.insert({"address":"my address content"});
#address項目存在のみデータ抽出
db.users.find({"address":{$exists:true}});

#インデックス情報取得
db.users.getIndexes();
#インデックス作成
db.users.ensureIndex({"point":1}); //1:asc;-1:desc
db.users.getIndexes();
#インデックス削除
db.users.dropIndex({"point":1});
db.users.getIndexes();
#唯一インデックス作成
db.users.ensureIndex({"name":1}, {"unique":true});
db.users.insert({"name":"user-5"});

#データ更新(CLEAR更新)
db.users.update({"name":"user-1"}, {"point":100});
db.users.find();
#データ更新(指定項目)
db.users.update({"name":"user-2"}, {$set:{"point":100}});
db.users.find();
#データ更新(数値累計)
db.users.find({"name":"user-3"}, {$inc:{"point":10}});
db.users.find();
#データ更新(項目削除)
db.users.update({"name":"user-4"}, {$unset:{"point":1}});
db.users.find();
#データ更新(項目名変更)
db.users.update({"name":"user-5"}, {$rename:{"group":"mygroup"}});
db.users.find();

#データあれば更新、なければ作成
db.users.update({"name":"user-10"}, {$inc:{"point":10}}, true); //upsert
db.users.find();
#最初の1件だけ+100
db.users.update({}, {$inc:{"point":100}});
#全件+100
db.users.update({}, {$inc:{"point":100}}, false, true);

#コマンドバッチ作成
$nano batch.js
...
db.users.remove({"name":"user-10"});
...
#バッチ実行(コマンドライン)
$mongo blog_db batch.js
$mongo blog_db
db.users.find();
#バッチ実行(load関数)
load("batch.js"); //load script
db.users.find();

#DBバックアップ
$mongodump --db blog_db
#DBリストア
$mongorestore --drop

0 件のコメント:

コメントを投稿

ホームページ