LoginSignup
32
30

More than 5 years have passed since last update.

MongoDB コマンド チートシート

Last updated at Posted at 2019-03-03

DB 権限まわり

ログイン

MongoDB の認証機能を有効にしていた場合
mongo で入った後に、以下のコマンド

use admin # DB 選択
db.auth("user_name", "password") # 認証

もしくは、mongo で入る際に以下でログイン

mongo DB名 -u ユーザ名 -p パスワード
ユーザ操作
  • 基本的に、対象となる DB を use データベース名 で選んでから行う
  • ユーザ作成前に、事前に DB を作成しておくこと
# ユーザ一覧 確認
db.getUsers()

# 全 DB の管理者権限 (CRUD 含む) をもつユーザ 作成
db.createUser({user:"user_name", pwd:"password", roles:[{role:"userAdminAnyDatabase", db:"admin"}]})

# 特定の DB の管理者権限をもつユーザ 作成
db.createUser({user:"user_name", pwd:"password", roles:[{role:"dbOwner", db:"db_name"}]})

# 特定の DB の一般ユーザ 作成
db.createUser({user:"user_name", pwd:"password", roles:[{role:"read", db:"db_name"}]})
db.createUser({user:"user_name", pwd:"password", roles:[{role:"readWrite", db:"db_name"}]})

# パスワード変更
db.changeUserPasword("user_name", "new_password")

# ユーザにロールを追加 (例: 読み取り権限 付与)
db.grantRolesToUser("user_name", [{role:"read", db:"db_name"}])

# ユーザのロールを削除 (例: 読み取り権限 剥奪)
db.revokeRolesFromUser("user_name", [{role:"read", db:"db_name"}])

# ユーザ削除
db.dropUser("user_name")

CRUD 操作: DB

  • 基本的に、対象となる DB を use データベース名 で選んでから行う
# DB 一覧
show dbs

# 使用 DB 切り替え
use データベース名

# 現在選択している DB 確認
db.stats()

# DB 作成 (実際は 1 件でもコレクションを作成しないと表示されない)
use データベース名

# DB 削除 (use で選択されているものが削除される)
db.dropDatabase()

CRUD 操作: コレクション

  • 基本的に、対象となる DB を use データベース名 で選んでから行う
# コレクション 一覧
show collections

# コレクション 作成
db.createCollection('collection_name')

# コレクション 削除
db.コレクション名.drop()

CRUD 操作: ドキュメント

  • 基本的に、対象となる DB を use データベース名 で選んでから行う
# ドキュメント 一覧 (全件 検索)
db.コレクション名.find()

# ドキュメント 一覧 (CLI でも見やすく整形してくれるオプション)
db.コレクション名.find().pretty()

# ドキュメント 検索 (AND 条件)
db.コレクション名.find({column1: 'aaa', column2: 10})

# ドキュメント 検索 (OR 条件検索)
db.コレクション名.find({column_name1: 'aaa'}, {column_name2: 10})

# ドキュメント 検索 (否定 条件検索 (index に注意))
db.コレクション名.find({column_name: {$ne: 'aaa'}})

# ドキュメント 検索 (「xxx より大きい」 条件検索)
db.コレクション名.find({column_name: {$gt: 10}})

# ドキュメント 検索 (「xxx 以上」 条件検索)
db.コレクション名.find({column_name: {$gte: 10}})

# ドキュメント 検索 (「xxx 未満」 条件検索)
db.コレクション名.find({column_name: {$lt: 10}})

# ドキュメント 検索 (「xxx 以下」 条件検索)
db.コレクション名.find({column_name: {$lte: 10}})

# ドキュメント 検索 (正規表現で検索)
db.コレクション名.find({column_name: /^aaa/})

# ドキュメント ソート (昇順 検索)
db.コレクション名.find().sort({column_name: 1})

# ドキュメント ソート (降順 検索)
db.コレクション名.find().sort({column_name: -1})

# ドキュメント 件数
db.コレクション名.count()

# ドキュメント 検索 (件数指定)
db.コレクション名.limit(20)

# ドキュメント 作成 (コレクション が万が一無くても自動で同時に生成される)
db.コレクション名.insert({new_column1: 'new_value', new_column2: 999})

# ドキュメント 作成 (Date 型で作成する場合)
db.コレクション名.insert({date_column: ISODate("2019-03-03T09:00:00+09:00")})

# ドキュメント 更新 (第 1 引数が更新条件、 第 2 引数が更新内容)
db.コレクション名.update({column_name: 'aaa'}, {$set: {column_name: 'bbb'}})

# ドキュメント 削除
db.コレクション名.remove({column_name: 'aa'})

CRUD 操作: インデックス系

  • 基本的に、対象となる DB を use データベース名 で選んでから行う
# インデックス作成 (インデックス貼るだけ)
db.コレクション名.ensureIndex({column_name: 1})

# インデックス作成 (インデックスに名前をつける)
db.コレクション名.ensureIndex({column_name: 1}, {name: 'index name'})

# インデックス削除
db.コレクション名.dropIndex('index name')

# ユニーク (一意) 制約
# sparse: true にしないと 「null」 もユニークの制約対象になってしまう
db.コレクション名.ensureIndex({column: 1}, {unique: true, sparse: true})

ユーザのロール

用意されている主なロール。詳細は、公式の「Built-In Roles」を参照。

種別 ロール 権限内容
Database User Roles read システム系のDBやコレクション以外のデータを読む権限
readWrite システム系のDBやコレクション以外のデータを読み書きする権限
Database Administration Roles dbAdmin データベースの管理権限
dbOwner システム全体の管理権限。readWrite、dbAdmin、userAdminロールと関連付いている
userAdmin ユーザやロールの管理者
Cluster Administration Roles clusterAdmin クラスタの管理権限。clusterManager、clusterMonitor、hostManagerロールと紐付く
clusterManager クラスタの運用管理権限
clusterMonitor クラスタのモニタリングツールに対する参照権限
hostManager サーバの運用管理権限
Backup and Restore Roles backup データのバックアップ権限
restore バックアップデータからのリストア権限
ALL-Database Roles readAnyDatabase 全てのDBの読み取り権限
readWriteAnyDatabase 全てのDBの読み書き権限
userAdminAnyDatabase 全てのDBのユーザ管理権限
dbAdminAnyDatabase 全てのDBのデータベース管理権限。dbAdminと同等
Superuser Roles root システム全体の管理権限。readWriteAnyDatabase、dbAdminAnyDatabase、userAdminAnyDatabase、clusterAdmin roles、restore、backupが紐付く
Internal Role __system 内部処理用の権限。割り当ててはいけない
32
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
30