ここで作成するプロジェクトのソースファイルは GitHub で公開しています.
MongoDB は NoSQL のひとつであり,多数のドキュメントをコレクションに格納することができる.MySQL や SQLite などのリレーショナルデータベース (RDB) との最も大きな違いは,リレーショナルデータベースはテーブルのスキーマ(構造:列の名前やデータ型など)を規定してフォーマルな形でデータを管理する一方で,NoSQL ではドキュメントを JSON データのような形式で表現しており,ドキュメントには複雑な階層構造を持たせることもできるところである.
RDB でのデータベースは,MongoDB でもデータベースであるが,RDB のテーブルはコレクション,データ(レコード)はドキュメントと呼ばれるので注意しよう.
まず,MontoDB の管理者 ID が root
,パスワードが hogehoge
として MongoDB のインストールと初期設定が終わっているものとする.なお,MongoDB のインストールと初期設定についてはここを参照してください.ここでは,keijidb
というデータベースを作成し,comments
コレクションにいくつかのドキュメントを追加する.このデータベースにあとで Laravel から接続する.
MongoDB のバージョンを確認する.
[vagrant@localhost ~]$ mongo --version ⏎ MongoDB shell version v4.2.3 git version: 6874650b362138df74be53d366bbefc321ea32d4 OpenSSL version: OpenSSL 1.0.1e-fips 11 Feb 2013 allocator: tcmalloc modules: none build environment: distmod: rhel70 distarch: x86_64 target_arch: x86_64 [vagrant@localhost ~]$
MongoDB に接続する.
[vagrant@localhost ~]$ mongo -u root ⏎ MongoDB shell version v4.2.3 Enter password: hogehoge ⏎(表示はされない) connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("04b43800-c299-4a4f-9ba1-2d2ad89fb4f0") } MongoDB server version: 4.2.3 >
データベースの一覧を表示する.
> show dbs ⏎ admin 0.000GB config 0.000GB local 0.000GB >
使用するデータベースを指定する.ここで,データベース keijidb
はまだ作成されていないが,後で自動的に作成される(厳密にはドキュメントを追加したときに作成されるようである).
> use keijidb ⏎ switched to db keijidb >
再度,データベースの一覧を表示するが,keijidb
はまだドキュメントが追加されていないので表示されない.
> show dbs ⏎ admin 0.000GB config 0.000GB local 0.000GB >
データベース keijidb
のコレクション comments
に4つのドキュメントを挿入する.
> db.comments.insertMany([ { title: "最初コメント", body: "最初のコメントの本文です" }, { title: "2個目", body: "2個目のコメントです" }, { title: "3個目のコメント", body: "3つ目のコメントですよ" }, { title: "コメント4個目", body: "4個目のコメント body です" } ]); ⏎ { "acknowledged" : true, "insertedIds" : [ ObjectId("5e441d469df97e94834bc53a"), ObjectId("5e441d469df97e94834bc53b"), ObjectId("5e441d469df97e94834bc53c"), ObjectId("5e441d469df97e94834bc53d") ] } >
三度,データベースの一覧を表示する.ドキュメントを追加したので keijidb
が表示された.
> show dbs ⏎ admin 0.000GB config 0.000GB keijidb 0.000GB local 0.000GB >
コレクションを一覧表示する.ドキュメントを追加したときにコレクションも自動生成されている.
> show collections ⏎ comments >
挿入したドキュメントの一覧を確認する.
> db.comments.find() ⏎ { "_id" : ObjectId("5e441d469df97e94834bc53a"), "title" : "最初コメント", "body" : "最初のコメントの本文です" } { "_id" : ObjectId("5e441d469df97e94834bc53b"), "title" : "2個目", "body" : "2個目のコメントです" } { "_id" : ObjectId("5e441d469df97e94834bc53c"), "title" : "3個目のコメント", "body" : "3つ目のコメントですよ" } { "_id" : ObjectId("5e441d469df97e94834bc53d"), "title" : "コメント4個目", "body" : "4個目のコメント body です" } >
MongoDB ではデータベースやコレクションを予め作成する必要はなく,ドキュメントを追加したときに自動的に作成されることに注意しよう.ここまでで,MongoDB にドキュメントの追加ができたので,次は Larvel からこのデータベースに接続してみよう.