イントロダクションIntroduction
MongoDBは、最も人気のあるNoSQLドキュメント指向データベースの1つで、高い書き込み負荷(分析やIoTに有用)と高可用性(自動フェイルオーバーでレプリカセットを簡単に設定できる)で利用されています。また、水平スケーラビリティのためにデータベースを簡単にシャードでき、集計、テキスト検索、地理空間クエリを実行するための強力なクエリ言語を持っています。MongoDB[https://www.mongodb.com/resources/products/fundamentals/why-use-mongodb] is one of the most popular NoSQL document-oriented database, used for its high write load (useful for analytics or IoT) and high availability (easy to set replica sets with automatic failover). It can also shard the database easily for horizontal scalability and has a powerful query language for doing aggregation, text search or geospatial queries.
SQLデータベースのように行や列のテーブルへデータを格納するのではなく、MongoDBデータベースの各レコードは、データのバイナリ表現であるBSONで記述されたドキュメントです。アプリケーションはこの情報をJSON形式で取り出せできます。ドキュメント、配列、埋め込みドキュメント、バイナリデータなど、さまざまなデータタイプをサポートしています。Instead of storing data in tables of rows or columns like SQL databases, each record in a MongoDB database is a document described in BSON, a binary representation of the data. Applications can then retrieve this information in a JSON format. It supports a wide variety of data types, including documents, arrays, embedded documents, and binary data.
LaravelでMongoDBを使用する前に、Composer経由でmongodb/laravel-mongodb
パッケージをインストールして使用することをお勧めします。laravel-mongodb
パッケージはMongoDBにより公式にメンテナンスされています。MongoDBはMongoDBドライバにより、PHPでネイティブにサポートされていますが、Laravel MongoDBパッケージはEloquentや他のLaravelの機能とのより豊かな統合を提供します。Before using MongoDB with Laravel, we recommend installing and using the mongodb/laravel-mongodb
package via Composer. The laravel-mongodb
package is officially maintained by MongoDB, and while MongoDB is natively supported by PHP through the MongoDB driver, the Laravel MongoDB[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/] package provides a richer integration with Eloquent and other Laravel features:
composer require mongodb/laravel-mongodb
インストールInstallation
MongoDBドライバMongoDB Driver
MongoDBデータベースに接続するには、mongodb
PHP拡張が必要です。Laravel Herdを使いローカルで開発している場合や、php.new
を使いPHPをインストールしている場合は、すでにこの拡張モジュールがインストールされています。しかし、手作業で拡張をインストールする必要がある場合は、PECL経由でインストールできます。To connect to a MongoDB database, the mongodb
PHP extension is required. If you are developing locally using Laravel Herd[https://herd.laravel.com] or installed PHP via php.new
, you already have this extension installed on your system. However, if you need to install the extension manually, you may do so via PECL:
pecl install mongodb
MongoDB PHP拡張モジュールのインストールの詳細は、MongoDB PHP拡張モジュールのインストール手順 を参照ください。For more information on installing the MongoDB PHP extension, check out the MongoDB PHP extension installation instructions[https://www.php.net/manual/en/mongodb.installation.php].
MongoDBサーバの開始Starting a MongoDB Server
MongoDBコミュニティサーバは、ローカルでMongoDBを実行するために使用でき、Windows、macOS、Linux、またはDockerコンテナとしてインストールできます。MongoDB のインストール方法は、公式MongoDBコミュニティインストールガイドを参照してください。The MongoDB Community Server can be used to run MongoDB locally and is available for installation on Windows, macOS, Linux, or as a Docker container. To learn how to install MongoDB, please refer to the official MongoDB Community installation guide[https://docs.mongodb.com/manual/administration/install-community/].
MongoDBサーバの接続文字列は、.env
ファイルで設定します。The connection string for the MongoDB server can be set in your .env
file:
MONGODB_URI="mongodb://localhost:27017"
MONGODB_DATABASE="laravel_app"
クラウドでMongoDBをホスティングするには、MongoDB Atlasの使用を検討してください。 アプリケーションからローカルで、MongoDB Atlasクラスタへアクセスするには、プロジェクトのIPアクセスリストにクラスタのネットワーク設定の中で自分のIPアドレスを追加する必要があります。
MongoDB Atlasの接続文字列は、.env
ファイルで設定することもできます。The connection string for MongoDB Atlas can also be set in your .env
file:
MONGODB_URI="mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>?retryWrites=true&w=majority"
MONGODB_DATABASE="laravel_app"
Laravel MongoDBパッケージのインストールInstall the Laravel MongoDB Package
最後に、Composerを使ってLaravel MongoDBパッケージをインストールします。Finally, use Composer to install the Laravel MongoDB package:
composer require mongodb/laravel-mongodb
Note:
mongodb
PHP拡張モジュールがインストールされていないと、このパッケージのインストールは失敗します。PHPの設定はCLIとWebサーバで異なることがあるので、両方の設定で拡張モジュールが有効になっていることを確認してください。[!NOTE]
This installation of the package will fail if themongodb
PHP extension is not installed. The PHP configuration can differ between the CLI and the web server, so ensure the extension is enabled in both configurations.
設定Configuration
アプリケーションのconfig/database.php
設定ファイルで、MongoDB接続を設定できます。このファイルで、mongodb
ドライバを使うmongodb
接続を追加します。You may configure your MongoDB connection via your application's config/database.php
configuration file. Within this file, add a mongodb
connection that utilizes the mongodb
driver:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI', 'mongodb://localhost:27017'),
'database' => env('MONGODB_DATABASE', 'laravel_app'),
],
],
機能Features
設定を完了したら、mongodb
パッケージとデータベース接続をアプリケーションで使い、様々な強力な機能を活用することができます。Once your configuration is complete, you can use the mongodb
package and database connection in your application to leverage a variety of powerful features:
- Eloquentを使用し、モデルをMongoDBのコレクションに格納することができます。Eloquentの標準機能に加えて、Laravel MongoDBパッケージは埋め込みリレーションシップなどの追加機能を提供します。このパッケージはMongoDBドライバへの直接アクセスも提供し、素のクエリや集約パイプラインのような操作を実行するために使用できます。Using Eloquent[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/eloquent-models/], models can be stored in MongoDB collections. In addition to the standard Eloquent features, the Laravel MongoDB package provides additional features such as embedded relationships. The package also provides direct access to the MongoDB driver, which can be used to execute operations such as raw queries and aggregation pipelines.
- クエリビルダを使って複雑なクエリを書く。Write complex queries[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/query-builder/] using the query builder.
mongodb
キャッシュドライバ は、TTLインデックスなどのMongoDBの機能を使用し、期限切れのキャッシュエントリを自動的に消去するように最適化されています。Themongodb
cache driver[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/cache/] is optimized to use MongoDB features such as TTL indexes to automatically clear expired cache entries.mongodb
キュー・ドライバを使った、キュー投入するジョブのディスパッチと処理。Dispatch and process queued jobs[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/queues/] with themongodb
queue driver.- Flysystem用GridFSアダプタを介して、GridFSにファイルを保存する。Storing files in GridFS[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/gridfs/], via the GridFS Adapter for Flysystem[https://flysystem.thephpleague.com/docs/adapter/gridfs/].
- データベース接続やEloquentを使うサードパーティ製パッケージのほとんどは、MongoDBと一緒に使うことができます。Most third party packages using a database connection or Eloquent can be used with MongoDB.
MongoDBとLaravelの使い方を引き続き学ぶには、MongoDBのクイックスタートガイドを参照してください。To continue learning how to use MongoDB and Laravel, refer to MongoDB's Quick Start guide[https://www.mongodb.com/docs/drivers/php/laravel-mongodb/current/quick-start/].