Mongo DB を WSL on Ubuntu にインストールする

皆さん、こんにちは。LP開発グループのn-ozawanです。
来週火曜(2/3)は節分ですね。陰陽道でその年の福徳を司る神様に歳徳神がおり、その歳徳神が在する方位を恵方と言います。恵方巻の名前の由来はその恵方から来ており、歳徳神がいる方向に向けて食べると良いとされます。ちなみに今年は南南東です。

本題です。
最近、とある事情からMongo DBを勉強しています。Mongo DBはドキュメント指向データベースであり、リレーショナルデータベース(RDB)とは勝手が異なりますので、まずは触って覚えたいところです。今回は WSL on Ubuntu のローカル環境でMongo DBをインストールする手順をまとめました。

Mongo DB

Mongo DBとは?

Mongo DB はドキュメント指向データベースと呼ばれるNoSQLの一種です。ドキュメント指向データベースとは、その名の通り、ドキュメントを保存するデータベースのことです。Mongo DBでは、BSONと呼ばれる、JSONに非常によく似た形式でデータを保存します。

Oracle等を代表とするRDBとの違いは、その柔軟性にあります。RDBはデータを表形式で保存し、その内容は非常に厳格です。一方、Mongo DBではスキーマレスを採用しており、ドキュメントの内容が異なっていても問題なく保存できます。これは仕様変更等により項目が増減してもDB側の設定を変更することなく、柔軟に開発を進めることができます。

Mongo DBはドキュメント指向データベースとして最も普及しており、AWSやAzureなどのクラウド環境で提供されるドキュメント指向データベースは、Mongo DB互換となっています。

インストール手順

WSL on Ubuntu の環境にMongo DBをインストールします。Ubuntuのバージョンは24.04 LTSです。Mongo DBをインストールする前に、UbuntuにDockerをインストールする必要があります。Dockerのインストールはこちらを参考にしてください。

Atras CLI のインストール

Mongo DBをインストールするには、Atras CLIをインストールする必要があります。Atras CLIのインストールにはこちらを参考にしました。

# aptで使用される公開鍵をインポートする
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor

# Mongo DB のエディションのリストファイルを作成する
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

# Atras CLI をインストールする
sudo apt update && sudo apt install -y mongodb-atlas

最後にAtlas CLI のインストールが成功していることを確認しましょう。

atlas --version

Mongo DB をインストール

Mongo DBをローカル環境にインストールします。インストールにはこちらを参考にしました。

sudo atlas deployments setup myDeployment --type local --mdbVersion 8.0 --port 27017 --connectWith skip

成功すると以下のメッセージが出力されます。

Deployment created!
Connection string: "mongodb://localhost:27017/?directConnection=true"

動作確認

コンソールから Mongo DB にアクセスするには、mongoshと呼ばれるツールを使います。mongoshはAtras CLIのインストール時に、一緒にインストールされていますので、特別な手順をせずとも使うことができます。

sudo atlas deployments connect myDeployment --connectWith mongosh

データを挿入します。

AtlasLocalDev myDeployment [direct: primary] test> db.users.insertOne({name: "n-ozawan"})

{
  acknowledged: true,
  insertedId: ObjectId('6976cf8f6327271a368de667')
}

挿入したデータを取り出します。

AtlasLocalDev myDeployment [direct: primary] test> db.users.find()

[
  { _id: ObjectId('6976cf8f6327271a368de667'), name: 'n-ozawan' }
]

おわりに

Mongo DBはJSONに非常によく似たドキュメントを扱いますので、とてもとっつきやすいデータベースです。とはいえ、NoSQLはこれまでのRDBとは勝手が異なりますので、実際に触ってみないことには分からないことが多いです。ローカル環境で好き勝手に色々と試せるのは良いですね。

ではまた。

Recommendおすすめブログ