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 からメタ情報も読み取って適用してくれる。 |