Docs 菜单
Docs 主页
/ / /
Laravel MongoDB
/

数据库和集合

在此页面上

  • 概述
  • 在连接配置中指定数据库
  • 访问集合
  • listCollections
  • 创建和拖放集合

在本指南中,您可以了解如何使用 Laravel MongoDB 访问和管理 MongoDB 数据库和集合。

MongoDB 以分层结构组织数据。 MongoDB 部署包含一个或多个数据库,每个数据库又包含一个或多个集合。在每个集合中,MongoDB 将数据存储为包含字段与值对的文档。在 Laravel MongoDB 中,您可以通过 Eloquent 模型访问文档。

要了解有关文档数据格式的更多信息,请参阅 MongoDB Server手册中的 文档 。

您可以在应用程序的 config/database.php文件中指定连接使用的数据库名称。 此文件中的 connections 属性存储所有数据库连接信息,例如连接string 、数据库名称以及可选的身份验证详细信息。 指定数据库连接后,您可以执行数据库级操作并访问数据库包含的集合。

如果您将database属性中的数据库名称设置为不存在的数据库的名称,Laravel 仍会建立有效连接。当您将任何数据插入数据库中的集合时,服务器会自动创建该数据。

以下示例展示了如何设置默认数据库连接,并通过设置dsndatabase属性在config/database.php文件中创建与animals数据库的数据库连接:

'default' => 'mongodb',
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'animals',
], ...
]

当您设置默认数据库连接时,Laravel MongoDB 会使用该连接进行操作,但您可以在config/database.php文件中指定多个数据库连接。

以下示例展示如何指定多个数据库连接( mongodbmongodb_alt )来访问animalsplants数据库:

'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'animals',
],
'mongodb_alt' => [
'driver' => 'mongodb',
'dsn' => 'mongodb://localhost:27017/',
'database' => 'plants',
]
], ...

注意

当您使用相同的连接字符串创建两个客户端时,MongoDB PHP 驱动程序会重复使用相同的连接。对两个不同的数据库使用两个连接没有开销,因此没有必要优化连接。

如果您的应用程序包含多个数据库连接,并且您希望将模型存储在默认数据库以外的数据库中,请覆盖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()方法来检索有关数据库中集合的信息:

$collections = DB::connection('mongodb')->getMongoDB()->listCollections();

要了解如何创建和删除集合,请参阅模式生成器指南中的执行 Laravel 迁移部分。

后退

启用和配置 TLS

来年

读取操作