MongoDBを触る機会があったので、コマンド一覧をまとめました。タイトルにあるように自分が使うコマンドのみ記載していますので、コマンドに偏りがあるのはスルーでお願いします。
なお今回は、MongoDBのバージョン3.0.7を利用します。
MongoDBへの接続
$ mongo 「ホスト名」/「DB名」 -u 「ユーザー名」 -p
MongoDB shell version: 3.0.7
Enter password:「パスワードを入力」
ローカルホストに接続する場合は、下記のようにホスト名を省略する事が可能です。
$ mongo 「DB名」 -u 「ユーザー名」 -p
ローカルホストで且つユーザー認証を有効化していない場合は、下記を入力する事でログインする事も可能です。
$ mongo
DB操作
# DB作成
use 「DB名」;
# DB切り替え
use 「DB名」;
# DB削除
use 「削除したいDB名」;
db.dropDatabase();
# DB一覧確認
show dbs;
use 「DB名」;と入力するだけで、DBが作成できてしまいます。
MySQLに慣れてると、少し違和感がありますね。
コレクション操作
コレクションは、MySQLでいう所のテーブルのようなものです。
# コレクション一覧確認
use 「DB名」;
show collections;
# コレクション追加
use 「DB名」;
db.createCollection('「コレクション名」');
# コレクション削除
use 「DB名」;
db.「コレクション名」.drop();
ユーザーまわり
# ユーザーの一覧確認
use admin;
db.system.users.find();
# 新規ユーザー作成(ここではrootの権限を持ったユーザーを作成してます)
use admin;
db.createUser(
{
user:"「作成したいユーザー名」",
pwd:"「パスワード」",
roles:[
{
"role" : "root",
"db" : "admin"
}
]
}
);
※useで指定しているDBと、rolesで指定しているDBは同じじゃなくても問題ありません。
※MongoDBにログインする場合、useで指定したDBに対してログインして下さい。
※roleはrootである必要はないので、必要な権限のroleに変更して下さい。
# ユーザー権限変更(ここでは任意のユーザーの権限をdbOwnerに変更しています)
use 「DB名」;
db.updateUser(
"「ユーザー名」",
{
roles:
[
{
role: "dbOwner",
db: "「DB名」"
}
]
}
);
※roleはdbOwnerである必要はないので、必要な権限のroleに変更して下さい。
# ユーザー削除
use admin;
db.system.users.remove(
{"_id" : "「DB名」.「ユーザー名」"}
);
Index
# Index確認
use 「DB名」;
db.「コレクション名」.getIndexes();
# Index作成(timeに対してをIndexを作成)
use 「DB名」;
db.「コレクション名」.ensureIndex({"time":1},{background:1});
その他
helpと入力する事により、ヘルプを表示させる事が出来ます。
> help
db.help() help on db methods
db.mycoll.help() help on collection methods
sh.help() sharding helpers
rs.help() replica set helpers
help admin administrative help
help connect connecting to a db help
help keys key shortcuts
help misc misc things to know
help mr mapreduce
show dbs show database names
show collections show collections in current database
show users show users in current database
show profile show most recent system.profile entries with time >= 1ms
show logs show the accessible logger names
show log [name] prints out the last segment of log in memory, 'global' is default
use <db_name> set current database
db.foo.find() list objects in collection foo
db.foo.find( { a : 1 } ) list objects in foo where a == 1
it result of the last line evaluated; use to further iterate
DBQuery.shellBatchSize = x set default number of items to display on shell
exit quit the mongo shell
MongoDB Shellはtabキーによるコマンド補完をサポートしています。
コマンドを入力した後に、tabキーを入力すると以下のようにコマンドの候補を表示してくれます。
> db.
db.adminCommand( db.grantRolesToUser(
db.auth( db.group(
db.changeUserPassword( db.groupcmd(
db.cloneCollection( db.groupeval(
db.cloneDatabase( db.hasOwnProperty(
db.commandHelp( db.help(
db.constructor db.hostInfo(
db.copyDatabase( db.isMaster(
db.createCollection( db.killOP(
db.createRole( db.killOp(
db.createUser( db.listCommands(
db.currentOP( db.loadServerScripts(
db.currentOp( db.logout(
db.dbEval( db.printCollectionStats(
db.dropAllRoles( db.printReplicationInfo(
db.dropAllUsers( db.printShardingStatus(
db.dropDatabase( db.printSlaveReplicationInfo(
db.dropRole( db.propertyIsEnumerable(
db.dropUser( db.prototype
db.eval( db.removeUser(
db.forceError( db.repairDatabase(
db.fsyncLock( db.resetError(
db.fsyncUnlock( db.revokePrivilegesFromRole(
db.getCollection( db.revokeRolesFromRole(
db.getCollectionInfos( db.revokeRolesFromUser(
db.getCollectionNames( db.runCommand(
db.getLastError( db.serverBits(
db.getLastErrorCmd( db.serverBuildInfo(
db.getLastErrorObj( db.serverCmdLineOpts(
db.getLogComponents( db.serverStatus(
db.getMongo( db.setLogLevel(
db.getName( db.setProfilingLevel(
db.getPrevError( db.setSlaveOk(
db.getProfilingLevel( db.setWriteConcern(
db.getProfilingStatus( db.shutdownServer(
db.getReplicationInfo( db.stats(
db.getRole( db.toLocaleString(
db.getRoles( db.toString(
db.getSiblingDB( db.tojson(
db.getSisterDB( db.unsetWriteConcern(
db.getSlaveOk( db.updateRole(
db.getUser( db.updateUser(
db.getUsers( db.upgradeCheck(
db.getWriteConcern( db.upgradeCheckAllDBs(
db.grantPrivilegesToRole( db.valueOf(
db.grantRolesToRole( db.version(