Skip to content

Merge 4.1 into 4.2 #2899

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions docs/includes/usage-examples/FindManyTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

declare(strict_types=1);

namespace App\Http\Controllers;

use App\Models\Movie;
use MongoDB\Laravel\Tests\TestCase;

class FindManyTest extends TestCase
{
/**
* @runInSeparateProcess
* @preserveGlobalState disabled
*/
public function testFindMany(): void
{
require_once __DIR__ . '/Movie.php';

Movie::truncate();
Movie::insert([
[
'title' => 'Centennial',
'runtime' => 1256,
],
[
'title' => 'Baseball',
'runtime' => 1140,
],
[
'title' => 'Basketball',
'runtime' => 600,
],
]);

// begin-find
$movies = Movie::where('runtime', '>', 900)
->orderBy('_id')
->get();
// end-find

$this->assertEquals(2, $movies->count());
}
}
1 change: 1 addition & 0 deletions docs/usage-examples.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ calls the controller function and returns the result to a web interface.
:maxdepth: 1

/usage-examples/findOne
/usage-examples/find
/usage-examples/insertOne
/usage-examples/insertMany
/usage-examples/updateOne
Expand Down
85 changes: 85 additions & 0 deletions docs/usage-examples/find.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
.. _laravel-find-usage:

=======================
Find Multiple Documents
=======================

.. facet::
:name: genre
:values: reference

.. meta::
:keywords: find many, retrieve, code example

.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:class: singlecol

You can retrieve multiple documents from a collection by creating a query
builder using a method such as ``Model::where()`` or by using the ``DB``
facade, and then chaining the ``get()`` method to retrieve the result.

Pass a query filter to the ``where()`` method to retrieve documents that meet a
set of criteria. When you call the ``get()`` method, MongoDB returns the
matching documents according to their :term:`natural order` in the database or
according to the sort order that you can specify by using the ``orderBy()``
method.

To learn more about query builder methods, see the :ref:`laravel-query-builder`
guide.

Example
-------

This usage example performs the following actions:

- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
``sample_mflix`` database
- Retrieves and prints documents from the ``movies`` collection that match a query filter

The example calls the following methods on the ``Movie`` model:

- ``where()``: matches documents in which the value of the ``runtime`` field is greater than ``900``
- ``orderBy()``: sorts matched documents by their ascending ``_id`` values
- ``get()``: retrieves the query results as a Laravel collection object

.. io-code-block::
:copyable: true

.. input:: ../includes/usage-examples/FindManyTest.php
:start-after: begin-find
:end-before: end-find
:language: php
:dedent:

.. output::
:language: json
:visible: false

// Results are truncated

[
{
"_id": ...,
"runtime": 1256,
"title": "Centennial",
...,
},
{
"_id": ...,
"runtime": 1140,
"title": "Baseball",
...,
},
...
]

For instructions on editing your Laravel application to run the usage example, see the
:ref:`Usage Examples landing page <laravel-usage-examples>`.

.. tip::

To learn about other ways to retrieve documents with {+odm-short+}, see the
:ref:`laravel-fundamentals-retrieve` guide.
Loading