Overview
在本指南中,您可以学习;了解如何自定义 Laravel MongoDB返回查询结果的方式。您可以通过将更多方法链接到 where() 方法来修改查找操作的结果。
以下部分演示如何修改where()方法的行为:
跳过和限制结果使用
skip()方法设立要跳过的文档数,使用take()方法设立要返回的文档总数
要学习有关 Laravel 集成中 Eloquent 模型的更多信息,请参阅 模型数据部分。
开始之前
要运行本指南中的代码示例,请完成快速入门教程。 本教程说明如何使用示例数据设置 MongoDB Atlas 实例,并在 Laravel Web 应用程序中创建以下文件:
Movie.php文件,其中包含一个Moviemovies模型来表示collection中的文档MovieController.php文件,其中包含用于运行数据库操作的show()函数browse_movies.blade.php文件,其中包含用于显示数据库操作结果的 HTML 代码
以下部分介绍如何编辑 Laravel 应用程序中的文件以运行查找操作代码示例并查看预期输出。
跳过并限制结果
此示例查询year值为1999的文档。 该操作会跳过前2匹配文档,总共输出3文档。
使用以下语法指定查询:
$movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get();
要在browse_movies视图中查看查询结果,请编辑MovieController.php文件中的show()函数,使其类似于以下代码:
class MovieController { public function show() { $movies = Movie::where('year', 1999) ->skip(2) ->take(3) ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
对查询结果进行排序
要根据指定字段的值对查询结果进行排序,请使用where()方法,然后使用orderBy()方法。
您可以对结果设置升序或降序排序。 默认情况下, orderBy()方法对提供的字段名称设置升序排序,但您可以通过将"asc"作为第二个参数传递来显式指定升序排序。 要指定降序排序,请将"desc"作为第二个参数传递。
如果您的文档在特定字段中包含重复值,您可以通过指定更多要排序的字段来处理平局。 如果其他字段包含唯一值,这可确保结果一致。
此示例查询countries字段的值包含"Indonesia"的文档,并首先对year字段进行升序排序,然后对title字段进行降序排序。
使用以下语法指定查询:
$movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get();
要在browse_movies视图中查看查询结果,请编辑MovieController.php文件中的show()函数,使其类似于以下代码:
class MovieController { public function show() { $movies = Movie::where('countries', 'Indonesia') ->orderBy('year') ->orderBy('title', 'desc') ->get(); return view('browse_movies', [ 'movies' => $movies ]); } }
更多信息
要查看演示如何使用 Laravel 集成执行查找操作的可运行代码示例,请参阅以下用法示例:
要了解如何根据过滤器条件检索数据,请参阅检索 MongoDB 数据指南。