Overview
在本指南中,您可以学习;了解如何自定义 Laravel MongoDB返回查询结果的方式。您可以通过将更多方法链接到 where() 方法来修改查找操作的结果。
以下部分演示如何修改where()方法的行为:
要学习;了解有关 Laravel 集成中的 Eloquent 模型的更多信息,请参阅 Eloquent 模型部分。
开始之前
要运行本指南中的代码示例,请完成快速入门教程。 本教程说明如何使用示例数据设置 MongoDB Atlas 实例,并在 Laravel Web 应用程序中创建以下文件:
- Movie.php文件,其中包含一个- Movie- movies模型来表示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          ]);     } } 
Title: Three Kings Year: 1999 Runtime: 114 IMDB Rating: 7.2 IMDB Votes: 130677 Plot: In the aftermath of the Persian Gulf War, 4 soldiers set out to steal gold that was stolen from Kuwait, but they discover people who desperately need their help. Title: Toy Story 2 Year: 1999 Runtime: 92 IMDB Rating: 7.9 IMDB Votes: 346655 Plot: When Woody is stolen by a toy collector, Buzz and his friends vow to rescue him, but Woody finds the idea of immortality in a museum tempting. Title: Beowulf Year: 1999 Runtime: 95 IMDB Rating: 4 IMDB Votes: 9296 Plot: A sci-fi update of the famous 6th Century poem. In a besieged land, Beowulf must battle against the hideous creature Grendel and his vengeance seeking mother. 
对查询结果进行排序
要根据指定字段的值对查询结果进行排序,请使用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         ]);     } } 
Title: Joni's Promise Year: 2005 Runtime: 83 IMDB Rating: 7.6 IMDB Votes: 702 Plot: A film delivery man promises ... Title: Gie Year: 2005 Runtime: 147 IMDB Rating: 7.5 IMDB Votes: 470 Plot: Soe Hok Gie is an activist who lived in the sixties ... Title: Requiem from Java Year: 2006 Runtime: 120 IMDB Rating: 6.6 IMDB Votes: 316 Plot: Setyo (Martinus Miroto) and Siti (Artika Sari Dewi) are young married couple ... ... 
提示
要了解有关排序的更多信息,请参阅以下资源:
- 手册术语表中的 自然顺序MongoDB Server 
更多信息
要查看演示如何使用 Laravel 集成执行查找操作的可运行代码示例,请参阅以下用法示例: