-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
DOCSP-35970: Find one usage example (#2768)
Adds a usage example page showing how to retrieve one document --------- Co-authored-by: norareidy <[email protected]> Co-authored-by: Jérôme Tamarelle <[email protected]>
- Loading branch information
1 parent
d4e5e2b
commit e77a474
Showing
3 changed files
with
112 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<?php | ||
|
||
declare(strict_types=1); | ||
|
||
namespace App\Http\Controllers; | ||
|
||
use App\Models\Movie; | ||
use MongoDB\Laravel\Tests\TestCase; | ||
|
||
class FindOneTest extends TestCase | ||
{ | ||
/** | ||
* @runInSeparateProcess | ||
* @preserveGlobalState disabled | ||
*/ | ||
public function testFindOne(): void | ||
{ | ||
require_once __DIR__ . '/Movie.php'; | ||
|
||
Movie::truncate(); | ||
Movie::insert([ | ||
['title' => 'The Shawshank Redemption', 'directors' => ['Frank Darabont', 'Rob Reiner']], | ||
]); | ||
|
||
// begin-find-one | ||
$movie = Movie::where('directors', 'Rob Reiner') | ||
->orderBy('_id') | ||
->first(); | ||
|
||
echo $movie->toJson(); | ||
// end-find-one | ||
|
||
$this->assertInstanceOf(Movie::class, $movie); | ||
$this->expectOutputRegex('/^{"_id":"[a-z0-9]{24}","title":"The Shawshank Redemption","directors":\["Frank Darabont","Rob Reiner"\]}$/'); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
.. _laravel-find-one-usage: | ||
|
||
=============== | ||
Find a Document | ||
=============== | ||
|
||
You can retrieve a single document from a collection by calling the ``where()`` and | ||
``first()`` methods on an Eloquent model or a query builder. | ||
|
||
Pass a query filter to the ``where()`` method and then call the ``first()`` method to | ||
return one document in the collection that matches the filter. If multiple documents match | ||
the query filter, ``first()`` returns the first matching document according to the documents' | ||
:term:`natural order` in the database or according to the sort order that you can specify | ||
by using the ``orderBy()`` method. | ||
|
||
Example | ||
------- | ||
|
||
This usage example performs the following actions: | ||
|
||
- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the | ||
``sample_mflix`` database. | ||
- Retrieves a document from the ``movies`` collection that matches a query filter. | ||
|
||
The example calls the following methods on the ``Movie`` model: | ||
|
||
- ``where()``: matches documents in which the value of the ``directors`` field includes ``'Rob Reiner'``. | ||
- ``orderBy()``: sorts matched documents by their ascending ``_id`` values. | ||
- ``first()``: retrieves only the first matching document. | ||
|
||
.. io-code-block:: | ||
|
||
.. input:: ../includes/usage-examples/FindOneTest.php | ||
:start-after: begin-find-one | ||
:end-before: end-find-one | ||
:language: php | ||
:dedent: | ||
|
||
.. output:: | ||
:language: console | ||
:visible: false | ||
|
||
// Result is truncated | ||
|
||
{ | ||
"_id": "573a1398f29313caabce94a3", | ||
"plot": "Spinal Tap, one of England's loudest bands, is chronicled by film director | ||
Marty DeBergi on what proves to be a fateful tour.", | ||
"genres": [ | ||
"Comedy", | ||
"Music" | ||
], | ||
"runtime": 82, | ||
"metacritic": 85, | ||
"rated": "R", | ||
"cast": [ | ||
"Rob Reiner", | ||
"Kimberly Stringer", | ||
"Chazz Dominguez", | ||
"Shari Hall" | ||
], | ||
"poster": "https://m.media-amazon.com/images/M/MV5BMTQ2MTIzMzg5Nl5BMl5BanBnXkFtZTgwOTc5NDI1MDE@._V1_SY1000_SX677_AL_.jpg", | ||
"title": "This Is Spinal Tap", | ||
... | ||
} | ||
|
||
|
||
For instructions on editing your Laravel application to run the usage example, see the | ||
:ref:`Usage Example landing page <laravel-usage-examples>`. | ||
|
||
.. tip:: | ||
|
||
To learn more about retrieving documents with {+odm-short+}, see the | ||
:ref:`laravel-fundamentals-retrieve` guide |