MongoDB †初期設定など †インストール(Mac) †brew install mongodb データ格納用ディレクトリ作成 †sudo mkdir -p /data/mongodb 権限付与 †chown magata /data/mongodb DB起動 †mongod --dbpath /data/mongodb ※ デフォルトは /data/db クライアント起動 †mongo DBの作成/削除など †DB作成/切替 †use DB名 DB削除 †use DB名 db.dropDatabase(); 現在接続しているDBの確認 †db.getName() DB一覧の確認 †show dbs; ユーザの登録/更新など †ユーザ一覧 †use admin; db.system.users.find(); ユーザ作成 †db.createUser(
{
user:"作成したいユーザー名",
pwd:"パスワード",
roles:[
{
"role" : "dbOwner",
"db" : "DB名"
}
]
}
);
ユーザ更新 †use DB名;
db.updateUser(
"ユーザー名",
{
roles:
[
{
role: "dbOwner",
db: "DB名"
}
]
}
);
ユーザ削除 †use admin;
db.system.users.remove({"_id" : "DB名.ユーザー名"});
ユーザ認証 †db.auth("admin","パスワード")
認証モードをONにしてDB起動する †コレクションの操作 †存在するコレクションを確認 †show collections; コレクション作成 †db.createCollection('コレクション名');
コレクション削除 †db.コレクション名.drop(); 索引の操作 †索引の確認 †db.コレクション名.getIndexes(); 索引の作成(col1 に対してを索引(昇順)を作成) †db.コレクション名.ensureIndex({"col1":1});
索引の作成(col1 に対してをユニークな索引(昇順)を作成) †db.コレクション名.ensureIndex({"col1":1}, {"unique":true});
索引の作成をバックグラウンドで行う場合 †db.コレクション名.ensureIndex({"col1":1}, { background: true});
例) db.books.ensureIndex({"col1":1};
db.books.ensureIndex({"col1":1}, {"unique":true});
索引の削除 †db.コレクション名.dropIndex({"col1":1});
データの操作 †条件検索 †db.books.find({name:"book1"});
LIKE検索 †db.books.find({name:/test1/});
OR検索 †db.books.find({ "$or": [ { "name": "test5" }, { "name": "test10" } ] });
AND検索 †db.books.find({ "name": /9$/, "price": {$lt:10000} });
大小比較 †db.books.find({price: {$gt:30000} }); // >
db.books.find({price: {$gte:30000} }); // >=
db.books.find({price: {$lt:30000} }); // <
db.books.find({price: {$lte:30000} }); // <=
IN句 †db.books.find({name: {$in: ["test5", "test10"]} });
distinct †db.books.distinct("price");
1件のみ取得 †db.books.findOne({name:"book1"});
選択列を指定する †db.books.find({name:/test1/}, {id:1,name:1});
sort †db.books.find().sort({name:1}); // 昇順
db.books.find().sort({name:-1}); // 降順
limit, offset †db.books.find().skip(10).limit(10); count †db.books.count(); count †db.books.count({name:"book2"});
db.books.find({name:"book1"}).count(true);
db.books.find({name:"book1"}).length();
指定した列が存在する行数をcount †db.books.find({author : {$exists: true} }).length();
実行計画 †db.books.find({name:"book1"}).explain()
集約 †db.books.aggregate({$group:{ "_id" : "$price", "count" : { "$sum" : 1 } } })
db.books.aggregate({$group:{ "_id" : {"price":"$price","auther":"$auther"}, "count" : { "$sum" : 1 } } })
条件で絞ったうえで集約 †db.books.aggregate( { $match: {"name":/20160420/} }, { $group: { "_id" : {"price":"$price"}, "count" : { "$sum" : 1 } } })
insert †db.books.insert({"name":"book1", price:1008});
update †db.books.update({"name":"book1"},{$set:{"price":2016} });
全てのデータをupdate †db.books.update({}, {$set: {"author" : "unknown"} }, false, true);
delete †db.books.update({}, {$set: {"author" : "unknown"} }, false, true);
upsert †db.users.update({"name": "book1"}, {$set: {"author" : "unknown"} }, true);
その他 †外部ファイルを実行 †mongo DB名 /path_to_command/command.js ※ フルPATHで指定? 外部ファイルを実行(mongoクライアントから) †load("command.js");
エクスポート †mongodump -d DB名 -c コレクション名 ※カレントディレクトリ配下に dump/DB名というディレクトリが作成され、コレクション名.bson と コレクション名.metadata.json というファイルが作成される。 インポート †mongorestore -d DB名 -c コレクション名 コレクション名.bson ※ コレクション名.metadata.json からメタ情報も読み取って適用してくれる。 |