Overview
在本指南中,您可以学习;了解如何在使用 Laravel MongoDB执行查找操作时设立读取偏好(read preference)。
开始之前
要运行本指南中的代码示例,请完成快速入门教程。 本教程说明如何使用示例数据设置 MongoDB Atlas 实例,并在 Laravel Web 应用程序中创建以下文件:
Movie.php文件,其中包含一个Moviemovies模型来表示collection中的文档MovieController.php文件,其中包含用于运行数据库操作的show()函数browse_movies.blade.php文件,其中包含用于显示数据库操作结果的 HTML 代码
以下部分介绍如何编辑 Laravel 应用程序中的文件以运行查找操作代码示例并查看预期输出。
设置读取偏好
要指定哪些副本集接收读取操作,请使用 readPreference() 方法设立读取偏好(read preference)。
readPreference() 方法接受以下参数:
mode:(必需)指定读取偏好(read preference)模式的字符串值。tagSets:(可选)指定与某些副本集成员相对应的键值标签的大量值。options:(可选)指定其他读取偏好(read preference)选项的大量值。
提示
要查看可用读取偏好(read preference)模式和选项的完整列表,请参阅MongoDB PHP扩展文档中的MongoDB\驱动程序\ReadPreference::__construct。
以下示例查询其中 title字段的值为 "Carrie" 的文档,并将读取偏好(read preference)为 ReadPreference::SECONDARY_PREFERRED。因此,如果没有可用的从节点,查询将从从节点(secondary node from replica set)副本集成员或主节点 (primary node in the replica set)成员检索结果:
使用以下语法指定查询:
$movies = Movie::where('title', 'Carrie') ->readPreference(ReadPreference::SECONDARY_PREFERRED) ->get();
要在browse_movies视图中查看查询结果,请编辑MovieController.php文件中的show()函数,使其类似于以下代码:
class MovieController { public function show() { $movies = Movie::where('title', 'Carrie') ->readPreference(ReadPreference::SECONDARY_PREFERRED) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
更多信息
要了解如何根据过滤器条件检索数据,请参阅检索 MongoDB 数据指南。
要学习;了解如何修改 Laravel 集成返回结果的方式,请参阅 修改查询结果 指南。