MongoDB入門メモ
ドットインストールでMongoDB入門を終えたのでメモしとく
よく使われる用語
データベースの操作
- show dbs;
- データベースの一覧を表示する
- use [データベース名]
- データベースを切り替える
- 新しいデータベースを作成する
- db.help()
- helpを表示する
- db.stats()
- 統計情報を表示する
- db.dropDatabase()
- データベースを削除する
コレクションの操作
- db.createCollection("[コレクション名]")
- コレクションを作成する
- show collections;
- コレクションの一覧を表示する
- db.[コレクション名].drop()
- コレクションを削除する
- db.[コレクション名].renameCollection("[新コレクション名]");
- コレクションの名前を変更する
ドキュメントの操作
- db.[コレクション名].insert({...});
- コレクションにドキュメントを挿入する
- 挿入するデータはJSON形式で記述する
- db.[コレクション名].find();
- ドキュメントを表示する
- db.[コレクション名].remove();
- ドキュメントを全て削除する
- db.[コレクション名].update({[条件]}, {[キー]:[値]});
- 条件にあてはまるドキュメントの内容を[キー]:[値]に更新する
- 特定の項目だけ更新したい場合は$setを使用する
- 条件にあてはまるドキュメントの内容を[キー]:[値]に更新する
- db.[コレクション名].update({[条件]}, {$set:{[キー]:[値]}})
- 条件にあてはまるドキュメントのキーの値を更新する
- db.[コレクション名].update({[条件]}, {$inc:{[キー]:[値]}})
- 条件にあてはまるドキュメントのキーの値を指定した値だけ増減する
- db.[コレクション名].update({[条件]}, {$unset:{[キー]:1}})
- 条件にあてはまるドキュメントのキーを削除する
- db.[コレクション名].update({[条件]}, {$rename:{[キー]:[変更後のキー]}})
- 条件にあてはまるドキュメントのキーの名前を変更する
- db.[コレクション名].update({[条件]}, {[更新内容]}, true})
- 条件に合致するドキュメントがあれば更新
- 条件に合致するドキュメントがなければ挿入
- db.[コレクション名].update({}, {[更新内容]}, false, true})
- すべてのドキュメントに対して更新
条件の指定の仕方
RDB | MongoDB |
---|---|
SELECT * FROM [テーブル名]; | db.[コレクション名].find() |
SELECT * FROM [テーブル名] WHERE [列名] = [値]; | db.[コレクション名].find({[キー]:[値]}) |
SELECT [列名1] FROM [テーブル名] WHERE [列名2] = [値]; | db.[コレクション名].find({[キー2]:[値]}, {[キー1]:true}) |
SELECT * FROM [テーブル名] WHERE [列名] <> [値]; | db.[コレクション名].find({[キー]:{$ne:[値]}}) |
SELECT * FROM [テーブル名] WHERE [列名] > [値]; | db.[コレクション名].find({[キー]:{$gt:[値]}}) |
SELECT * FROM [テーブル名] WHERE [列名] >= [値]; | db.[コレクション名].find({[キー]:{$gte:[値]}}) |
SELECT * FROM [テーブル名] WHERE [列名] < [値]; | db.[コレクション名].find({[キー]:{$lt:[値]}}) |
SELECT * FROM [テーブル名] WHERE [列名] <= [値]; | db.[コレクション名].find({[キー]:{$lte:[値]}}) |
SELECT * FROM [テーブル名] WHERE [列名1] > [値1] AND [列名1] < [値2]; |
db.[コレクション名].find({[キー1]:{$gt:[値1], $lt:[値2]}}) |
SELECT * FROM [テーブル名] ORDER BY [列名]; | db.[コレクション名].find().sort({[キー]:1}) |
SELECT * FROM [テーブル名] ORDER BY [列名] DESC; | db.[コレクション名].find().sort({[キー]:-1}) |
SELECT * FROM [テーブル名] WHERE rownum=1; | db.[コレクション名].findOne() |
SELECT * FROM [テーブル名] WHERE rownum<=3; | db.[コレクション名].find().limit(3) |
SELECT * FROM ( SELECT ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber, [列名] FROM [テーブル名] ) AS foo WHERE rownumber >=2 AND rownumber <=5 | db.[コレクション名].find().skip(2).limit(3) |
SELECT * FROM [テーブル名] WHERE [列名] IN([値1], [値2]); | db.[コレクション名].find({[キー]:{$in:[[値1],[値2]}}) |
SELECT * FROM [テーブル名] WHERE [列名] NOT IN([値1], [値2]); | db.[コレクション名].find({[キー]:{$nin:[[値1],[値2]}}) |
SELECT * FROM [テーブル名] WHERE [列名] IS NOT NULL | db.[コレクション名].find({[キー]:{$exist:true}}) |
Index
- db.[コレクション名].getIndexes()
- インデックスを表示する
- db.[コレクション名].ensureIndex({[キー]:1})
- キーの昇順でインデックスを作成する
- db.[コレクション名].ensureIndex({[キー]:-1})
- キーの降順でインデックスを作成する
- db.[コレクション名].dropIndex({[キー]:1})
- インテックスを削除する
- db.[コレクション名].ensureIndex({[キー]:1}, {"unique":true})
- ユニークインデックスを作成する
外部ファイルからクエリを実行する
- mongo [データベース名] [ファイル名]
- shellなどから実行する場合
- load([ファイル名])
- インタラクティブシェルから実行する場合
バックアップ・リストア
- mongodump [データベース名]
- カレントディレクトリの下にdump/[データベース名]を作成しbson(JSONのバイナリ形式)ファイルでバックアップを作成する
- mongorestore --drop
- カレントディレクトリの下にdump/[データベース名]からリストアする
- --dropオプションをつけるとデータベースを削除してからリストアする
JavaScript
MongoDBでは普通にJavaScriptが使用できる
var x = 5; for (var i=5, i<10, i++) { db.users.insert({ "name" : "user-" + i, "team" : i % 3, "score" : Math.floor(Math.rondom()*100) }) }