Laravel入門トップページ


目次

  1. Composerのダウンロードとインストール
  2. コメント掲示板を作成してみよう
  3. リレーションシップを使いこなそう
  4. ユーザ認証の機能を実現しよう
  5. マルチ認証の機能を実現しよう
  6. MongoDB に接続しよう
    1. 概要と MongoDB の準備
    2. Laravel から MongoDB へ接続する
    3. Laravel での MongoDB マイグレーション
  7. キューを利用しよう
  8. コマンド(コンソール)を利用しよう
  9. 本番環境にデプロイしよう

MongoDB に接続しよう

概要と MongoDB の準備

目次に戻る

ソース

ここで作成するプロジェクトのソースファイルは 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 からこのデータベースに接続してみよう.

目次に戻る