数据库和集合
Overview
在本指南中,您可以了解如何使用 Laravel MongoDB 访问和管理 MongoDB 数据库和集合。
MongoDB以分层结构组织数据。 MongoDB 部署包含一个或多个数据库,每个数据库又包含一个或多个集合。 在每个集合中, MongoDB将数据存储为包含字段和值对的文档。 在 Laravel MongoDB中,您可以通过 Eloquent 模型访问权限文档。
在连接配置中指定数据库
您可以在应用程序的 config/database.php
文件中指定连接使用的数据库名称。 此文件中的 connections
属性存储所有数据库连接信息,例如连接string 、数据库名称以及可选的身份验证详细信息。 指定数据库连接后,您可以执行数据库级操作并访问数据库包含的集合。
如果您设立database
属性中的数据库名称设置为不存在的数据库的名称,Laravel 仍会建立有效连接。 将任何数据插入数据库中的集合时,服务器都会自动创建该数据。
以下示例展示了如何设立默认数据库连接,并通过设置dsn
和database
属性在config/database.php
文件中创建与animals
数据库的数据库连接:
'default' => 'mongodb', 'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://localhost:27017/', 'database' => 'animals', ], ... ]
当您设立默认数据库连接时,Laravel MongoDB会使用该连接进行操作,但您可以在config/database.php
文件中指定多个数据库连接。
以下示例展示如何指定多个数据库连接( mongodb
和mongodb_alt
)来访问权限animals
和plants
数据库:
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://localhost:27017/', 'database' => 'animals', ], 'mongodb_alt' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://localhost:27017/', 'database' => 'plants', ] ], ...
注意
MongoDBPHP当您使用相同的连接 创建两个客户端时,string 驾驶员会重复使用相同的连接。对两个不同的数据库使用两个连接没有开销,因此没有必要优化连接。
如果您的应用程序包含多个数据库连接,并且您希望将模型存储在默认数据库以外的数据库中,请覆盖Model
类中的$connection
属性。
以下示例展示了如何覆盖Flower
模型类上的$connection
属性以使用mongodb_alt
连接。 这会指示 Laravel MongoDB 将模型存储在plants
数据库的flowers
集合中,而不是存储在默认数据库中:
class Flower extends Model { protected $connection = 'mongodb_alt'; }
访问集合
当您创建扩展MongoDB\Laravel\Eloquent\Model
的模型类时,Laravel MongoDB 会将模型数据存储在集合中,其名称格式为模型类名称的蛇形命名法复数形式。
例如,如果您创建一个名为Flower
的模型类,Laravel 则会将该模型应用于数据库中的flowers
集合。
提示
要学习;了解如何在模型类中指定不同的集合名称,请参阅 Eloquent 模型类指南的更改模型集合名称部分。
我们通常建议您使用 Eloquent ORM 来访问集合,以提高代码的可读性和可维护性。 以下示例使用Flower
类指定查找操作,以便 Laravel 从flowers
集合中检索结果:
Flower::where('name', 'Water Lily')->get()
如果使用 Eloquent 模型无法完成操作,则可以通过调用DB
门面上的collection()
方法来访问查询构建器。 以下示例显示了与上一示例相同的查询,但该查询是使用DB::collection()
方法构造的:
DB::connection('mongodb') ->collection('flowers') ->where('name', 'Water Lily') ->get()
listCollections
要查看有关数据库中每个集合的信息,请调用listCollections()
方法。
以下示例访问数据库连接,然后调用listCollections()
方法来检索有关数据库中集合的信息:
$collections = DB::connection('mongodb')->getMongoDB()->listCollections();
创建和拖放集合
要了解如何创建和删除集合,请参阅模式生成器指南中的执行 Laravel 迁移部分。