如何构建 Laravel + MongoDB 后端服务
Laravel  /  管理员 发布于 1年前   455
Laravel 是一个领先的 PHP 框架,大大提高了全球 PHP 开发人员的工作效率。我来自 WordPress 背景,但当被要求为前端应用程序构建网络服务时,
我想到了 Laravel 和 MongoDB,尤其是当它们与 MongoDB Atlas 开发人员数据平台这篇Laravel MongoDB教程面向考虑使用MongoDB作为数据库
的潜在和现有Laravel开发者。
让我们为前端应用程序创建一个简单的 REST 后端,并了解 MongoDB 的一些新特性。
使用MongoDB并不会影响Laravel的Web前端,因此我们将在本文中使用Laravel内置的API路由。
官方的 mongodb/laravel-mongodb软件包提供,它扩展了 Eloquent,
即 Laravel 内置的 ORM,首先,让我们创建一个默认的 Laravel 应用程序,建立一个基线。
我们将参照我们的 MongoDB Laravel 集成页面上提供的一些说明,
该页面是 MongoDB Laravel 的主要入口。
任何 Laravel 环境都可以使用,但本文将在 Ubuntu 下使用一些 Linux 命令。
前提条件
MongoDB Atlas 集群
创建一个免费集群并加载我们的示例数据
代码编辑器
可选: 我们有一个 MongoDB VS 代码扩展可让您轻松浏览数据库。
启动并运行 Laravel 网络服务器
注:我们将通过 Composer 创建 Laravel 项目,但 文章的代码库可以使用。
https://github.com/mongodb-developer/laravel-mongodb-tutorial/
"设置和配置你的 Laravel 项目 "说明。
MongoDB 与 Laravel 集成
https://www.mongodb.com/compatibility/mongodb-laravel-intergration
中的 "设置和配置你的 Laravel 项目 "说明介绍了如何配置 Laravel-MongoDB 开发环境。
下面我们将介绍 Laravel 应用程序的创建和 MongoDB 的配置。
这里有一些方便的链接,以备不时之需:
官方 Laravel 安装说明(这里是 10.23.0)
https://laravel.com/docs/10.x/installation
PHP 官方安装说明(PHP 8.1.6+ 这里)
https://www.php.net/manual/en/install.php
安装 Composer(按此处安装 Composer 2.3.5)
https://getcomposer.org/doc/00-intro.md#installation-linux-unix-macos
MongoDB PHP 扩展
https://www.mongodb.com/docs/drivers/php/
创建 Laravel 项目
在开发环境正常运行后,让我们创建一个 Laravel 项目,方法是创建一个 Laravel 项目目录。
在新目录中,运行指定使用 Laravel 的命令,创建一个名为 laraproject 的新 Laravel 项目:
composer create-project laravel/laravel laraproject
之后,你的目录结构应该是这样的:
└── ./laraproject
├── ./app
├── ./artisan
├── ./bootstrap
├── ...
开发环境配置妥当后,我们就可以浏览 Laravel 网站.
添加Laravel与MongoDB的连接
检查MongoPHP驱动程序是否安装并运行
为了检查MongoDB驱动程序是否在网络服务器中安装并运行,
我们可以在Laravel网站中添加一个网页。
在代码项目中,打开/routes/web.php,添加一个路由如下:
Route::get('/info', function () {
phpinfo();
});
随后访问 localhost/info/ 网页,我们应该会看到 PHPinfo 页面。
在页面中搜索 MongoDB 部分,我们应该会看到类似下面的内容。
这意味着 MongoDB PHP 驱动程序已加载并准备就绪。
如果出现经验错误,我们的 MongoDB PHP 错误处理将对典型问题进行说明。
我们可以使用 Composer将 Laravel MongoDB 软件包添加到应用程序中。
在命令提示符下,进入项目目录,运行下面的命令将软件包添加到<project>/vendor/ 目录。
composer require mongodb/laravel-mongodb:4.0.0
接下来,更新数据库配置,添加 MongoDB 连接字符串和凭证。
打开 /config/database.php 文件,更新 "connection "数组如下:
'connections' => [
'mongodb' => [
'driver' => 'mongodb',
'dsn' => env('MONGODB_URI'),
'database' => 'YOUR_DATABASE_NAME',
],
env('MONGODB_URI') 指的是项目默认 .env 文件的内容。
确保该文件不会出现在源控制中。
打开 <project>/.env 文件,在 DB_URI 环境变量中添加连接字符串和凭据,格式为
MONGODB_URI=mongodb+srv://USERNAME:[email protected]/?retryWrites=true&w=majority
您的连接字符串可能看起来有些不同。了解 如何在中获取连接字符串。
记住 允许网络服务器的 IP 地址访问 MongoDB 群集.大多数开发人员会将自己当前的 IP 地址添加到集群中。
在 /config/database.php 中,我们可以选择性地设置默认数据库连接。
在文件顶部,将'default'更改为'default' => env('DB_CONNECTION', 'mongodb')、
我们的 Laravel 应用程序就可以连接 MongoDB 数据库了。
让我们创建一个能 ping 到它的 API 端点。
在 /routes/api.php 中添加下面的路由,保存并访问 localhost/api/ping/。
API 将返回对象 {"msg": "MongoDB可访问!"}。
如果出现错误信息,很可能是配置问题。
下面是一些 一般 PHP MongoDB 错误处理技巧.
Route::get('/ping', function (Request $request) {
$connection = DB::connection('mongodb');
$msg = 'MongoDB is accessible!';
try {
$connection->command(['ping' => 1]);
} catch (\Exception $e) {
$msg = 'MongoDB is not accessible. Error: ' . $e->getMessage();
}
return ['msg' => $msg];
});
使用 Laravel 的 Eloquent 创建数据
Laravel 自带 Eloquent
是一个抽象数据库后端的 ORM,因此用户可以使用一个通用接口来使用不同的数据库。
多亏了 Laravel MongoDB软件包,开发人员可以选择使用 MongoDB 数据库,
从而从灵活的模式、出色的性能和可扩展性中获益。
Eloquent 有一个 "模型 "类,它是我们的代码与特定数据库表
(或 MongoDB 术语中的 "集合")之间的接口。
模型类的实例代表关系数据库中的表行。在 MongoDB 中,它们是集合中的文档。
在关系数据库中,我们只能为数据库中定义的列设置值,但 MongoDB 允许设置任何字段。
如果我们想在应用程序中执行文档模式,并防止出现姓名错别字等错误,那么模型可以定义可填写字段。
如果我们想要更快地实现无模式的灵活性,则不需要这样做。
对于新的 Laravel 开发人员来说,Eloquent 有很多功能和理念,在官方文档是了解更多信息的最佳途径。
现在,我们将重点介绍在 Eloquent 中使用 MongoDB 的最重要方面。
我们可以在同一个 Laravel 应用程序中同时使用 MongoDB 和 SQL 数据库。
每个模型都与其中一个连接相关联。
经典 Eloquent 模型
首先,我们通过运行以下命令创建一个经典模型及其相关的迁移代码:
php artisan make:model CustomerSQL --migration
命令执行后创建了两个文件:
<project>/app/Models/CustomerSQL.php
<project>/database/migrations/YY_MM_DD_xxxxx_create_customer_s_q_l_s_table.php。
迁移代码需要在提示符下执行一次,以初始化表和模式。
在扩展的 Migration 类中,检查 up() 函数中的代码。
我们将编辑迁移的 up() 函数,建立一个简单的客户模式:
public function up()
{
Schema::connection('mysql')->create('customer_sql', function (Blueprint $table) {
$table->id();
$table->uuid('guid')->unique();
$table->string('first_name');
$table->string('family_name');
$table->string('email');
$table->text('address');
$table->timestamps();
});
}
我们的迁移代码已经准备就绪,让我们执行它来创建与 Eloquent 模型相关的表和索引。
php artisan migrate --path=/database/migrations/YY_MM_DD_xxxxxx_create_customer_s_q_l_s_table.php
在 MySQL 数据库中,迁移创建了一个具有所需模式的 "customer_sql "表以及必要的索引。
Laravel 在'migrations'表中记录了哪些迁移已经执行。
接下来,我们可以修改 <project>/app/Models/CustomerSQL.php 中的模型代码,
以匹配我们的模式。
// This is the standard Eloquent Model
use Illuminate\Database\Eloquent\Model;
class CustomerSQL extends Model
{
use HasFactory;
// the selected database as defined in /config/database.php
protected $connection = 'mysql';
// the table as defined in the migration
protected $table= 'customer_sql';
// our selected primary key for this model
protected $primaryKey = 'guid';
//the attributes' names that match the migration's schema
protected $fillable = ['guid', 'first_name', 'family_name', 'email', 'address'];
}
MongoDB Eloquent 模型
让我们为名为 "CustomerMongoDB "的 MongoDB 数据库创建一个 Eloquent 模型,
在项目目录下运行以下 Laravel 提示命令"
php artisan make:model CustomerMongoDB
Laravel 在文件 \models\CustomerMongoDB.php 中创建了一个 CustomerMongoDB 类,
如下代码块所示。默认情况下,模型使用 "默认 "数据库连接,但我们可以通过在类中添加 $connection 成员来指定使用哪一个。
同样,我们也可以通过 $collection 成员指定集合名称。请注意 "use "语句是如何替换基础模型类的。
要将"_id "设为主键,并从 MongoDB 的高级功能(如数组推/拉)中获益,就必须这样做。
//use Illuminate\Database\Eloquent\Model;
use MongoDB\Laravel\Eloquent\Model;
class CustomerMongoDB extends Model
{
use HasFactory;
// the selected database as defined in /config/database.php
protected $connection = 'mongodb';
// equivalent to $table for MySQL
protected $collection = 'laracoll';
// defines the schema for top-level properties (optional).
protected $fillable = ['guid', 'first_name', 'family_name', 'email', 'address'];
}
扩展类的定义与 Laravel 的默认定义几乎完全相同。
注意,$table 被替换为 $collection,以使用 MongoDB 的命名方式。就是这样。
我们仍然可以在 MongoDB 中使用 Eloquent Migrations(下文将详细介绍),
但由于 MongoDB 灵活的模式,使用 Laravel-MongoDB Migration 定义模式和创建集合是可选的。
在高层次上,MongoDB集合中的每个文档都可以有不同的模式。
如果我们想 强制模式模式,我们就可以这样做!MongoDB 有一个很棒的模式验证机制,
在使用 db.createcollection()
使用 Eloquent 进行 CRUD
模型准备就绪后,为 MongoDB 后端创建数据并没有什么不同,这也是我们对 ORM 的期望。
下面,我们可以比较一下 /api/create_eloquent_mongo/ 和 /api/create_eloquent_sql/ API 端点。
除了 CustomerMongoDB 和 CustomerSQL 模型名称不同外,代码完全相同。
Route::get('/create_eloquent_sql/', function (Request $request) {
$success = CustomerSQL::create([
'guid'=> 'cust_0000',
'first_name'=> 'John',
'family_name' => 'Doe',
'email' => '[email protected]',
'address' => '123 my street, my city, zip, state, country'
]);
...
});
Route::get('/create_eloquent_mongo/', function (Request $request) {
$success = CustomerMongoDB::create([
'guid'=> 'cust_1111',
'first_name'=> 'John',
'family_name' => 'Doe',
'email' => '[email protected]',
'address' => '123 my street, my city, zip, state, country'
]);
...
});
添加文档后,我们可以使用 Eloquent 的 "where "函数检索文档,如下所示:
Route::get('/find_eloquent/', function (Request $request) {
$customer = CustomerMongoDB::where('guid', 'cust_1111')->get();
...
});
通过学习 Eloquent 和 MongoDB Laravel 扩展,开发人员还可以学到更多知识。学习
Laravel MongoDB 查询测试是查找更多语法示例的绝佳地方,并且会不断更新。
当然,我们也可以使用 Eloquent 更新和删除记录,如下代码所示:
Route::get('/update_eloquent/', function (Request $request) {
$result = CustomerMongoDB::where('guid', 'cust_1111')->update( ['first_name' => 'Jimmy'] );
...
});
Route::get('/delete_eloquent/', function (Request $request) {
$result = CustomerMongoDB::where('guid', 'cust_1111')->delete();
...
});
Eloquent 是开始使用 MongoDB 的简单方法,其工作原理与人们所期望的非常相似。
即使只有一个简单的模式,开发人员也可以通过 MongoDB Atlas 的全面管理集群,
从强大的可扩展性、高数据可靠性和集群可用性中获益。
集群和分片
至此,我们与 MongoDB 相连的后端服务已经启动并运行,一篇典型的 "CRUD "文章到此为止。
不过,MongoDB 的功能远不止这些,请继续阅读。
释放 MongoDB 的全部功能要充分发挥 MongoDB 的威力,
最好充分利用其 文档模型和本地查询 API文档模型在概念上类似于 对象,但它基于BSON
(二进制表示法,具有更精细的类型),并由高性能存储引擎支持。
文档支持复杂的 BSON 类型,包括对象、数组和正则表达式。
其本地查询 API 可以高效地访问和处理此类数据。
为什么文档模型如此出色?
让我们来讨论一下文档模型的几个优点。
减少或消除连接
嵌入式文档和数组与
数据建模允许开发人员避免昂贵的数据库 "连接 "操作,尤其是在最关键的工作负载、查询和庞大的集合上。
如果需要,MongoDB 确实支持类似于连接的操作,即使用 查找操作符支持类似联接的操作,但文档模型可让开发人员将此类操作保持在最低水平或完全取消。
减少连接还能更容易地将集合分片到多个服务器上,从而提高容量。
降低工作量成本
这种 NoSQL 策略对于提高数据库工作负载效率、减少账单至关重要。
这就是亚马逊多年前取消大部分内部关系数据库工作负载的原因。
有助于避免模式更新时的停机时间
MongoDB 文档包含在 "集合"(SQL 术语中的表格)中。
SQL 与 MongoDB 的最大区别在于,集合中的每个文档都可以有不同的模式。
我们可以在同一个集合中存储完全不同的模式。
这使得我们可以采用以下策略
模式版本管理等策略,以避免模式更新时的停机时间!
数据建模超出了本文的讨论范围,但值得花 15 分钟观看
MongoDB 数据建模原理》视频视频 丹尼尔-库帕尔的作者
MongoDB 数据建模和模式设计的作者 Daniel Coupal 的视频。至少,请阅读以下短文
MongoDB 模式的 6 条经验法则文章。
嵌套数据的 CRUD
Laravel MongoDB Eloquent 扩展确实提供了
针对嵌套数据的嵌套数据的特定操作。
不过,添加嵌套数据也非常直观,无需使用 embedsMany() 和 embedsOne()方法
添加嵌套数据也非常直观。
如前所述,使用 Eloquent 很容易定义顶层模式属性。
但是,在使用数组和嵌入式文档时,要做到这一点就比较麻烦了。
幸运的是,我们可以在 PHP 中直观地创建模型的数据结构。
在下面的示例中,"地址 "字段从字符串变成了对象类型。
电子邮件 "字段从字符串变为数组(字符串)类型。
MySQL 不支持数组和对象类型。
Route::get('/create_nested/', function (Request $request) {
$message = "executed";
$success = null;
$address = new stdClass;
$address->street = '123 my street name';
$address->city = 'my city';
$address->zip= '12345';
$emails = ['[email protected]', '[email protected]'];
try {
$customer = new CustomerMongoDB();
$customer->guid = 'cust_2222';
$customer->first_name = 'John';
$customer->family_name= 'Doe';
$customer->email= $emails;
$customer->address= $address;
$success = $customer->save(); // save() returns 1 or 0
}
catch (\Exception $e) {
$message = $e->getMessage();
}
return ['msg' => $message, 'data' => $success];
});
如果我们运行 localhost/api/create_nested/ API 端点,就会创建一个文档,如下所示的 JSON 表示法。
Eloquent 会自动添加 updated_at 和 created_at 的日期时间字段,
我们可以禁用 Eloquent 的这一功能(查看 Laravel 官方文档中的).
介绍 MongoDB 查询 API
MongoDB 有一个本机查询 API,该 API 经过优化,可用于操作和转换复杂数据。
还有一个强大的 聚合框架利用该框架,我们可以将数据从一个阶段传送到另一个阶段,
从而使开发人员能够直观地创建非常复杂的聚合。本机查询可通过 MongoDB "集合 "对象访问。
Eloquent 和 "原始查询
Eloquent 有一种智能方法,可以通过使用 "原始查询 "来公开底层数据库的全部功能。
"原始查询 "是 "按原样 "发送到数据库的,无需 Eloquent Query Builder 进行任何处理,
从而公开了原生查询 API。
我们可以从模型中执行一个原始的原生 MongoDB 查询,如下所示,模型将返回一个 Eloquent 集合
$mongodbquery = ['guid' => 'cust_1111'];
// returns a "Illuminate\Database\Eloquent\Collection" Object
$results = CustomerMongoDB::whereRaw( $mongodbquery )->get();
还可以获取本地 MongoDB 集合对象,并执行查询,返回本地 MongoDB 文档或游标等对象:
$mongodbquery = ['guid' => 'cust_1111', ];
$mongodb_native_collection = DB::connection('mongodb')->getCollection('laracoll');
$document = $mongodb_native_collection->findOne( $mongodbquery );
$cursor = $mongodb_native_collection->find( $mongodbquery );
直接使用 MongoDB 集合是访问 MongoDB 所有功能的可靠方法。
通常,人们会首先使用本地 collection.insert()、collection.find() 和 collection.update()。
常见的 MongoDB Query API 函数使用类似的逻辑工作,需要匹配条件来确定要选择或删除的文档。
一个可选的投影定义了我们希望在结果中看到哪些字段。
在 Laravel 中,有多种查询数据的方法,下面的 /find_native/ API 端点展示了如何使用 whereRaw()。
此外,我们还可以使用 MongoDB 的 findOne() 和 查找() 集合方法,它们分别返回一个文档和一个游标。
/*
Find records using a native MongoDB Query
1 - with Model->whereRaw()
2 - with native Collection->findOne()
3 - with native Collection->find()
*/
Route::get('/find_native/', function (Request $request) {
// a simple MongoDB query that looks for a customer based on the guid
$mongodbquery = ['guid' => 'cust_2222'];
// Option #1
//==========
// use Eloquent's whereRaw() function. This is the easiest way to stay close to the Laravel paradigm
// returns a "Illuminate\Database\Eloquent\Collection" Object
$results = CustomerMongoDB::whereRaw( $mongodbquery )->get();
// Option #2 & #3
//===============
// use the native MongoDB driver Collection object. with it, you can use the native MongoDB Query API
$mdb_collection = DB::connection('mongodb')->getCollection('laracoll');
// find the first document that matches the query
$mdb_bsondoc= $mdb_collection->findOne( $mongodbquery ); // returns a "MongoDB\Model\BSONDocument" Object
// if we want to convert the MongoDB Document to a Laravel Model, use the Model's newFromBuilder() method
$cust= new CustomerMongoDB();
$one_doc = $cust->newFromBuilder((array) $mdb_bsondoc);
// find all documents that matches the query
// Note: we're using find without any arguments, so ALL documents will be returned
$mdb_cursor = $mdb_collection->find( ); // returns a "MongoDB\Driver\Cursor" object
$cust_array = array();
foreach ($mdb_cursor->toArray() as $bson) {
$cust_array[] = $cust->newFromBuilder( $bson );
}
return ['msg' => 'executed', 'whereraw' => $results, 'document' => $one_doc, 'cursor_array' => $cust_array];
});
更新文档的方法是,除了提供匹配条件外,还提供一个更新列表。下面是一个使用
updateOne()的示例,但 updateMany(updateOne()
返回的文档包含匹配到的文档数量和实际修改的文档数量。
/*
Update a record using a native MongoDB Query
*/
Route::get('/update_native/', function (Request $request) {
$mdb_collection = DB::connection('mongodb')->getCollection('laracoll');
$match = ['guid' => 'cust_2222'];
$update = ['$set' => ['first_name' => 'Henry', 'address.street' => '777 new street name'] ];
$result = $mdb_collection->updateOne($match, $update );
return ['msg' => 'executed', 'matched_docs' => $result->getMatchedCount(), 'modified_docs' => $result->getModifiedCount()];
});
删除文档和查找文档一样简单。
同样,有一个匹配标准,API 会返回一个文档,显示已删除文档的数量。
Route::get('/delete_native/', function (Request $request) {
$mdb_collection = DB::connection('mongodb')->getCollection('laracoll');
$match = ['guid' => 'cust_2222'];
$result = $mdb_collection->deleteOne($match );
return ['msg' => 'executed', 'deleted_docs' => $result->getDeletedCount() ];
});
聚合管道
既然我们现在可以访问 MongoDB 本机 API,那么让我们来介绍
聚合管道是 MongoDB 聚合框架中的一项任务。
开发人员使用聚合框架执行各种任务,从实时仪表盘到 "大数据 "分析。
一开始,我们可能会用它来查询、过滤和排序数据。
聚合介绍的聚合介绍 实用 MongoDB 聚合中对聚合的介绍做了很好的概述。
聚合管道由多个阶段组成,每个阶段的输出都是下一个阶段的输入,就像 Unix 中的管道一样。
我们将使用 "sample_mflix "示例数据库,该数据库在创建 Atlas 集群时就已加载。
Laravel 允许我们在同一个应用程序中访问多个 MongoDB 数据库,
所以让我们添加 sample_mflix 数据库(到 database.php):
'mongodb_mflix' => [
'driver' => 'mongodb',
'dsn' => env('DB_URI'),
'database' => 'sample_mflix',
],
接下来,我们可以建立一个 /aggregate/ API 端点,并定义一个三阶段聚合管道,
从 "电影 "集合中获取数据,计算每个流派的平均电影评分,然后返回一个列表。
有关电影评分聚合的更多详情
Route::get('/aggregate/', function (Request $request) {
$mdb_collection = DB::connection('mongodb_mflix')->getCollection('movies');
$stage0 = ['$unwind' => ['path' => '$genres']];
$stage1 = ['$group' => ['_id' => '$genres', 'averageGenreRating' => ['$avg' => '$imdb.rating']]];
$stage2 = ['$sort' => ['averageGenreRating' => -1]];
$aggregation = [$stage0, $stage1, $stage2];
$mdb_cursor = $mdb_collection->aggregate( $aggregation );
return ['msg' => 'executed', 'data' => $mdb_cursor->toArray() ];
});
由此可见,对数据进行分组、计算、转换和排序的几个阶段是多么容易。这是执行
聚合操作甚至可以输出一个文档,随后由 updateOne() 方法使用。
有一个完整的 聚合课程.不要忘记索引,我们现在知道了如何执行 CRUD 操作、本地查询和聚合。
但是,不要忘记编制索引来提高性能。
MongoDB 索引策略和 最佳实践超出了本文的讨论范围,但让我们来看看如何创建索引。
方案 1:使用 Eloquent 的迁移创建索引
首先,我们可以使用 Eloquent 的 Migrations。
尽管我们可以不使用 Migrations,因为我们有一个灵活的模式,但它们可以作为存储如何定义和创建索引的工具。
由于我们在创建模型时没有使用 --migration 选项,因此我们可以稍后再创建迁移。
在这种情况下,我们可以运行以下命令:
php artisan make:migration create_customer_mongo_db_table
它将创建一个位于
<project>/database/migrations/YYYY_MM_DD_xxxxxx_create_customer_mongo_db_table.php
的迁移。我们可以更新 up() 函数的代码,为我们的集合创建一个索引。
例如,我们将为 "guid "字段创建一个索引,并使其成为唯一约束。
默认情况下,MongoDB 的 _id 主键字段总是以
对象 ID初始化。我们可以提供自己的唯一标识符来代替 MongoDB 的默认 ObjectId。
public function up() {
Schema::connection('mongodb')->create('laracoll', function ($collection) {
$collection->unique('guid'); // Ensure the guid is unique since it will be used as a primary key.
});
}
如前所述,可以使用以下命令执行该迁移 up() 函数:
php artisan migrate --path=/database/migrations/2023_08_09_051124_create_customer_mongo_db_table.php
如果 "laracoll "集合不存在,则会创建该集合,并为 "guid "字段创建索引。
在 Atlas 图形用户界面中,它看起来像这样:
方案 2:使用 MongoDB 本机 API 创建索引
第二个选项是使用 MongoDB 本机的 createIndex()函数,它可能有一些新的选项,
但尚未被 Laravel MongoDB 包所覆盖。
下面是一个创建索引的简单示例,使用 "guid "字段作为唯一约束。
Route::get('/create_index/', function (Request $request) {
$indexKeys = ["guid" => 1];
$indexOptions = ["unique" => true];
$result = DB::connection('mongodb')->getCollection('laracoll')->createIndex($indexKeys, $indexOptions);
return ['msg' => 'executed', 'data' => $result ];
});
方案 #3:使用 Atlas 图形用户界面创建索引
最后,我们还可以 在网络 Atlas GUI 界面创建索引使用可视化生成器或从 JSON 创建索引。
GUI 界面便于进行实验。
在 MongoDB 指南针中也是如此。
结论
本文介绍了如何为前端网络应用程序创建一个由 MongoDB 支持的 PHP/Laravel 后端服务。
我们已经看到了 Laravel 开发人员如何轻松地利用 MongoDB 后端来发挥他们现有的技能。
这也说明了为什么文档模型与良好的数据建模相关联,能带来更高的数据库效率和可扩展性。
我们可以充分利用它和原生 MongoDB 查询 API,释放 MongoDB 的全部威力,以更少的停机时间创建更好的应用程序。
了解有关 Laravel MongoDB 扩展语法的更多信息,请参阅 repo 上的示例测试,
https://github.com/jenssegers/laravel-mongodb/tree/master/tests
了解更多有关 Laravel MongoDB 扩展语法的信息。
https://github.com/mongodb/mongo-php-library/blob/master/tests/DocumentationExamplesTest.php
转:
https://www.mongodb.com/developer/languages/php/laravel-mongodb-tutorial/
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号