Table of Contents
はじめに
MongoDBを久しぶりに触るたびにコマンドを調べ直しているので、基本操作をまとめました。
サービスの起動と状態確認
# 起動$ sudo systemctl start mongod
# 状態の確認$ sudo systemctl status mongod
# 停止$ sudo systemctl stop mongod
# OS起動時に自動で立ち上げる$ sudo systemctl enable mongodservice コマンドでも操作できます。
$ sudo service mongod start$ sudo service mongod statusシェルに接続して操作する
$ mongoshデータベースとコレクションの確認
# データベース一覧show dbs
# 使用するデータベースを選択use db_name
# コレクション一覧show collections
# 現在選択中のデータベースを確認db削除する
# データベースの削除(選択中のものが対象)use db_namedb.dropDatabase()
# コレクションの削除db.collection_name.drop()データベースをリネームする
MongoDBには、データベース名を直接変更するコマンドがありません。バックアップを取って、別名でリストアし、元を削除するという手順を踏みます。
# 1. バックアップを取る$ mongodump --db old_name --out /tmp/backup
# 2. 新しい名前でリストアする$ mongorestore --db new_name /tmp/backup/old_name
# 3. 中身を確認してから、古いほうを削除する$ mongosh> use old_name> db.dropDatabase()バックアップと移行
バックアップ
# データベース単位$ mongodump --db db_name --out 出力先パス
# 全データベース$ mongodump --out 出力先パスリストア
# データベースまるごと$ mongorestore --db db_name バックアップのパス
# 既存データを削除してからリストアする$ mongorestore --drop --db db_name バックアップのパス
# 特定のコレクションだけ$ mongorestore -d db_name -c collection_name コレクションのbsonファイルのパス認証が必要な場合
$ mongodump -u ユーザー名 -p --authenticationDatabase admin --db db_name --out 出力先パス-p にパスワードを直接書かずに指定すると、実行時に入力を求められます。コマンド履歴にパスワードを残さないため、この書き方を推奨します。
おわりに
MongoDBは、リネームのようによくある操作に専用コマンドがなかったり、以前使えたメソッドが削除されていたりします。古い記事のコマンドがそのまま動かないことがあるので、手元のバージョンを mongosh --version で確認してから作業するのが確実です。
