skip to content
barorin&

MongoDBの基本操作まとめ|起動・コマンド・リネーム・バックアップ

/ 5 min read

Table of Contents

はじめに

MongoDBを久しぶりに触るたびにコマンドを調べ直しているので、基本操作をまとめました。

サービスの起動と状態確認

Terminal window
# 起動
$ sudo systemctl start mongod
# 状態の確認
$ sudo systemctl status mongod
# 停止
$ sudo systemctl stop mongod
# OS起動時に自動で立ち上げる
$ sudo systemctl enable mongod

service コマンドでも操作できます。

Terminal window
$ sudo service mongod start
$ sudo service mongod status

シェルに接続して操作する

Terminal window
$ mongosh

データベースとコレクションの確認

Terminal window
# データベース一覧
show dbs
# 使用するデータベースを選択
use db_name
# コレクション一覧
show collections
# 現在選択中のデータベースを確認
db

削除する

Terminal window
# データベースの削除(選択中のものが対象)
use db_name
db.dropDatabase()
# コレクションの削除
db.collection_name.drop()

データベースをリネームする

MongoDBには、データベース名を直接変更するコマンドがありません。バックアップを取って、別名でリストアし、元を削除するという手順を踏みます。

Terminal window
# 1. バックアップを取る
$ mongodump --db old_name --out /tmp/backup
# 2. 新しい名前でリストアする
$ mongorestore --db new_name /tmp/backup/old_name
# 3. 中身を確認してから、古いほうを削除する
$ mongosh
> use old_name
> db.dropDatabase()

バックアップと移行

バックアップ

Terminal window
# データベース単位
$ mongodump --db db_name --out 出力先パス
# 全データベース
$ mongodump --out 出力先パス

リストア

Terminal window
# データベースまるごと
$ mongorestore --db db_name バックアップのパス
# 既存データを削除してからリストアする
$ mongorestore --drop --db db_name バックアップのパス
# 特定のコレクションだけ
$ mongorestore -d db_name -c collection_name コレクションのbsonファイルのパス

認証が必要な場合

Terminal window
$ mongodump -u ユーザー名 -p --authenticationDatabase admin --db db_name --out 出力先パス

-p にパスワードを直接書かずに指定すると、実行時に入力を求められます。コマンド履歴にパスワードを残さないため、この書き方を推奨します。

おわりに

MongoDBは、リネームのようによくある操作に専用コマンドがなかったり、以前使えたメソッドが削除されていたりします。古い記事のコマンドがそのまま動かないことがあるので、手元のバージョンを mongosh --version で確認してから作業するのが確実です。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。