diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml
index 45833d579..faed625d0 100644
--- a/.github/workflows/build-ci.yml
+++ b/.github/workflows/build-ci.yml
@@ -4,11 +4,15 @@ on:
     push:
     pull_request:
 
+env:
+  MONGODB_EXT_V1: mongodb-1.21.0
+  MONGODB_EXT_V2: mongodb
+
 jobs:
     build:
         runs-on: "${{ matrix.os }}"
 
-        name: "PHP ${{ matrix.php }} Laravel ${{ matrix.laravel }} MongoDB ${{ matrix.mongodb }} ${{ matrix.mode }}"
+        name: "PHP/${{ matrix.php }} Laravel/${{ matrix.laravel }} Driver/${{ matrix.driver }} Server/${{ matrix.mongodb }} ${{ matrix.mode }}"
 
         strategy:
             matrix:
@@ -19,13 +23,18 @@ jobs:
                     - "5.0"
                     - "6.0"
                     - "7.0"
+                    - "8.0"
                 php:
                     - "8.1"
                     - "8.2"
                     - "8.3"
+                    - "8.4"
                 laravel:
                     - "10.*"
                     - "11.*"
+                driver:
+                    - 1
+                    - 2
                 include:
                     - php: "8.1"
                       laravel: "10.*"
@@ -59,11 +68,19 @@ jobs:
                     if [ "${{ matrix.mongodb }}" = "4.4" ]; then MONGOSH_BIN="mongo"; else MONGOSH_BIN="mongosh"; fi
                     docker exec --tty mongodb $MONGOSH_BIN 127.0.0.1:27017 --eval "db.runCommand({ serverStatus: 1 })"
 
+            -   name: Setup cache environment
+                id: extcache
+                uses: shivammathur/cache-extensions@v1
+                with:
+                    php-version: ${{ matrix.php }}
+                    extensions: ${{ matrix.driver == 1 && env.MONGODB_EXT_V1 || env.MONGODB_EXT_V2 }}
+                    key: "extcache-v${{ matrix.driver }}"
+
             -   name: "Installing php"
                 uses: "shivammathur/setup-php@v2"
                 with:
                     php-version: ${{ matrix.php }}
-                    extensions: "curl,mbstring,xdebug"
+                    extensions: "curl,mbstring,xdebug,${{ matrix.driver == 1 && env.MONGODB_EXT_V1 || env.MONGODB_EXT_V2 }}"
                     coverage: "xdebug"
                     tools: "composer"
 
diff --git a/composer.json b/composer.json
index af060bb3c..b6c79b3f9 100644
--- a/composer.json
+++ b/composer.json
@@ -23,14 +23,14 @@
     "license": "MIT",
     "require": {
         "php": "^8.1",
-        "ext-mongodb": "^1.15",
+        "ext-mongodb": "^1.21|^2",
         "composer-runtime-api": "^2.0.0",
         "illuminate/cache": "^10.36|^11",
         "illuminate/container": "^10.0|^11",
         "illuminate/database": "^10.30|^11",
         "illuminate/events": "^10.0|^11",
         "illuminate/support": "^10.0|^11",
-        "mongodb/mongodb": "^1.15"
+        "mongodb/mongodb": "^1.21|^2"
     },
     "require-dev": {
         "mongodb/builder": "^0.2",
diff --git a/docs/eloquent-models.txt b/docs/eloquent-models.txt
index 8aee6baf7..316313849 100644
--- a/docs/eloquent-models.txt
+++ b/docs/eloquent-models.txt
@@ -11,6 +11,12 @@ Eloquent Models
 .. meta::
    :keywords: php framework, odm
 
+.. toctree::
+  
+   Eloquent Model Class </eloquent-models/model-class/>
+   Relationships </eloquent-models/relationships>
+   Schema Builder </eloquent-models/schema-builder>
+
 Eloquent models are part of the Laravel Eloquent object-relational
 mapping (ORM) framework, which lets you to work with data in a relational
 database by using model classes and Eloquent syntax. The {+odm-short+} extends
@@ -26,9 +32,3 @@ the {+odm-short+} to work with MongoDB in the following ways:
   between models
 - :ref:`laravel-schema-builder` shows how to manage indexes on your MongoDB
   collections by using Laravel migrations
-
-.. toctree::
-
-   /eloquent-models/model-class/
-   Relationships </eloquent-models/relationships>
-   Schema Builder </eloquent-models/schema-builder>
diff --git a/docs/fundamentals.txt b/docs/fundamentals.txt
index f0945ad63..db482b2b8 100644
--- a/docs/fundamentals.txt
+++ b/docs/fundamentals.txt
@@ -15,11 +15,11 @@ Fundamentals
    :titlesonly:
    :maxdepth: 1
 
-   /fundamentals/connection
-   /fundamentals/database-collection
-   /fundamentals/read-operations
-   /fundamentals/write-operations
-   /fundamentals/aggregation-builder
+   Connections </fundamentals/connection>
+   Databases & Collections </fundamentals/database-collection>
+   Read Operations </fundamentals/read-operations>
+   Write Operations </fundamentals/write-operations>
+   Aggregation Builder </fundamentals/aggregation-builder>
 
 Learn more about the following concepts related to {+odm-long+}:
 
diff --git a/docs/fundamentals/connection.txt b/docs/fundamentals/connection.txt
index 26a937323..2434448ab 100644
--- a/docs/fundamentals/connection.txt
+++ b/docs/fundamentals/connection.txt
@@ -13,9 +13,9 @@ Connections
 
 .. toctree::
 
-   /fundamentals/connection/connect-to-mongodb
-   /fundamentals/connection/connection-options
-   /fundamentals/connection/tls
+   Connection Guide </fundamentals/connection/connect-to-mongodb>
+   Connection Options </fundamentals/connection/connection-options>
+   Configure TLS </fundamentals/connection/tls>
 
 .. contents:: On this page
    :local:
diff --git a/docs/includes/query-builder/QueryBuilderTest.php b/docs/includes/query-builder/QueryBuilderTest.php
index 46822f257..229db2867 100644
--- a/docs/includes/query-builder/QueryBuilderTest.php
+++ b/docs/includes/query-builder/QueryBuilderTest.php
@@ -46,6 +46,19 @@ protected function tearDown(): void
         parent::tearDown();
     }
 
+    public function testOptions(): void
+    {
+        // begin options
+        $result = DB::connection('mongodb')
+            ->table('movies')
+            ->where('year', 2000)
+            ->options(['comment' => 'hello'])
+            ->get();
+        // end options
+
+        $this->assertInstanceOf(\Illuminate\Support\Collection::class, $result);
+    }
+
     public function testWhere(): void
     {
         // begin query where
diff --git a/docs/includes/usage-examples/CountTest.php b/docs/includes/usage-examples/CountTest.php
index ecf53db47..5e7e34c62 100644
--- a/docs/includes/usage-examples/CountTest.php
+++ b/docs/includes/usage-examples/CountTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class CountTest extends TestCase
@@ -29,14 +30,24 @@ public function testCount(): void
             ],
         ]);
 
-        // begin-count
+        // begin-eloquent-count
         $count = Movie::where('genres', 'Biography')
             ->count();
 
         echo 'Number of documents: ' . $count;
-        // end-count
+        // end-eloquent-count
 
         $this->assertEquals(2, $count);
-        $this->expectOutputString('Number of documents: 2');
+
+        // begin-qb-count
+        $count = DB::table('movies')
+            ->where('genres', 'Biography')
+            ->count();
+
+        echo 'Number of documents: ' . $count;
+        // end-qb-count
+
+        $this->assertEquals(2, $count);
+        $this->expectOutputString('Number of documents: 2Number of documents: 2');
     }
 }
diff --git a/docs/includes/usage-examples/DeleteManyTest.php b/docs/includes/usage-examples/DeleteManyTest.php
index 5050f952e..8948c06fb 100644
--- a/docs/includes/usage-examples/DeleteManyTest.php
+++ b/docs/includes/usage-examples/DeleteManyTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class DeleteManyTest extends TestCase
@@ -29,14 +30,35 @@ public function testDeleteMany(): void
             ],
         ]);
 
-        // begin-delete-many
+        // begin-eloquent-delete-many
         $deleted = Movie::where('year', '<=', 1910)
             ->delete();
 
         echo 'Deleted documents: ' . $deleted;
-        // end-delete-many
+        // end-eloquent-delete-many
 
         $this->assertEquals(2, $deleted);
-        $this->expectOutputString('Deleted documents: 2');
+
+        Movie::insert([
+            [
+                'title' => 'Train Pulling into a Station',
+                'year' => 1896,
+            ],
+            [
+                'title' => 'The Ball Game',
+                'year' => 1898,
+            ],
+        ]);
+
+        // begin-qb-delete-many
+        $deleted = DB::table('movies')
+            ->where('year', '<=', 1910)
+            ->delete();
+
+        echo 'Deleted documents: ' . $deleted;
+        // end-qb-delete-many
+
+        $this->assertEquals(2, $deleted);
+        $this->expectOutputString('Deleted documents: 2Deleted documents: 2');
     }
 }
diff --git a/docs/includes/usage-examples/DeleteOneTest.php b/docs/includes/usage-examples/DeleteOneTest.php
index 1a2acd4e0..9038618f8 100644
--- a/docs/includes/usage-examples/DeleteOneTest.php
+++ b/docs/includes/usage-examples/DeleteOneTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class DeleteOneTest extends TestCase
@@ -25,16 +26,33 @@ public function testDeleteOne(): void
             ],
         ]);
 
-        // begin-delete-one
+        // begin-eloquent-delete-one
         $deleted = Movie::where('title', 'Quiz Show')
-            ->orderBy('_id')
             ->limit(1)
             ->delete();
 
         echo 'Deleted documents: ' . $deleted;
-        // end-delete-one
+        // end-eloquent-delete-one
 
         $this->assertEquals(1, $deleted);
-        $this->expectOutputString('Deleted documents: 1');
+
+        Movie::insert([
+            [
+                'title' => 'Quiz Show',
+                'runtime' => 133,
+            ],
+        ]);
+
+        // begin-qb-delete-one
+        $deleted = DB::table('movies')
+            ->where('title', 'Quiz Show')
+            ->limit(1)
+            ->delete();
+
+        echo 'Deleted documents: ' . $deleted;
+        // end-qb-delete-one
+
+        $this->assertEquals(1, $deleted);
+        $this->expectOutputString('Deleted documents: 1Deleted documents: 1');
     }
 }
diff --git a/docs/includes/usage-examples/DistinctTest.php b/docs/includes/usage-examples/DistinctTest.php
index 0b7812241..35a0e63ce 100644
--- a/docs/includes/usage-examples/DistinctTest.php
+++ b/docs/includes/usage-examples/DistinctTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class DistinctTest extends TestCase
@@ -45,15 +46,25 @@ public function testDistinct(): void
             ],
         ]);
 
-        // begin-distinct
+        // begin-eloquent-distinct
         $ratings = Movie::where('directors', 'Sofia Coppola')
             ->select('imdb.rating')
             ->distinct()
             ->get();
 
         echo $ratings;
-        // end-distinct
+        // end-eloquent-distinct
 
-        $this->expectOutputString('[[6.4],[7.8]]');
+        // begin-qb-distinct
+        $ratings = DB::table('movies')
+            ->where('directors', 'Sofia Coppola')
+            ->select('imdb.rating')
+            ->distinct()
+            ->get();
+
+        echo $ratings;
+        // end-qb-distinct
+
+        $this->expectOutputString('[[6.4],[7.8]][6.4,7.8]');
     }
 }
diff --git a/docs/includes/usage-examples/FindManyTest.php b/docs/includes/usage-examples/FindManyTest.php
index 18324c62d..e136c65d7 100644
--- a/docs/includes/usage-examples/FindManyTest.php
+++ b/docs/includes/usage-examples/FindManyTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class FindManyTest extends TestCase
@@ -33,11 +34,20 @@ public function testFindMany(): void
             ],
         ]);
 
-        // begin-find
+        // begin-eloquent-find
         $movies = Movie::where('runtime', '>', 900)
             ->orderBy('_id')
             ->get();
-        // end-find
+        // end-eloquent-find
+
+        $this->assertEquals(2, $movies->count());
+
+        // begin-qb-find
+        $movies = DB::table('movies')
+            ->where('runtime', '>', 900)
+            ->orderBy('_id')
+            ->get();
+        // end-qb-find
 
         $this->assertEquals(2, $movies->count());
     }
diff --git a/docs/includes/usage-examples/FindOneTest.php b/docs/includes/usage-examples/FindOneTest.php
index 98452a6a6..c5304d378 100644
--- a/docs/includes/usage-examples/FindOneTest.php
+++ b/docs/includes/usage-examples/FindOneTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class FindOneTest extends TestCase
@@ -13,7 +14,7 @@ class FindOneTest extends TestCase
      * @runInSeparateProcess
      * @preserveGlobalState disabled
      */
-    public function testFindOne(): void
+    public function testEloquentFindOne(): void
     {
         require_once __DIR__ . '/Movie.php';
 
@@ -22,15 +23,41 @@ public function testFindOne(): void
             ['title' => 'The Shawshank Redemption', 'directors' => ['Frank Darabont', 'Rob Reiner']],
         ]);
 
-        // begin-find-one
+        // begin-eloquent-find-one
         $movie = Movie::where('directors', 'Rob Reiner')
-          ->orderBy('_id')
+          ->orderBy('id')
           ->first();
 
         echo $movie->toJson();
-        // end-find-one
+        // end-eloquent-find-one
 
         $this->assertInstanceOf(Movie::class, $movie);
         $this->expectOutputRegex('/^{"_id":"[a-z0-9]{24}","title":"The Shawshank Redemption","directors":\["Frank Darabont","Rob Reiner"\]}$/');
     }
+
+    /**
+     * @runInSeparateProcess
+     * @preserveGlobalState disabled
+     */
+    public function testQBFindOne(): void
+    {
+        require_once __DIR__ . '/Movie.php';
+
+        Movie::truncate();
+        Movie::insert([
+            ['title' => 'The Shawshank Redemption', 'directors' => ['Frank Darabont', 'Rob Reiner']],
+        ]);
+
+        // begin-qb-find-one
+        $movie = DB::table('movies')
+          ->where('directors', 'Rob Reiner')
+          ->orderBy('_id')
+          ->first();
+
+        echo $movie['title'];
+        // end-qb-find-one
+
+        $this->assertSame($movie['title'], 'The Shawshank Redemption');
+        $this->expectOutputString('The Shawshank Redemption');
+    }
 }
diff --git a/docs/includes/usage-examples/InsertManyTest.php b/docs/includes/usage-examples/InsertManyTest.php
index e1bf4539a..79e00971f 100644
--- a/docs/includes/usage-examples/InsertManyTest.php
+++ b/docs/includes/usage-examples/InsertManyTest.php
@@ -6,6 +6,7 @@
 
 use App\Models\Movie;
 use DateTimeImmutable;
+use Illuminate\Support\Facades\DB;
 use MongoDB\BSON\UTCDateTime;
 use MongoDB\Laravel\Tests\TestCase;
 
@@ -21,7 +22,7 @@ public function testInsertMany(): void
 
         Movie::truncate();
 
-        // begin-insert-many
+        // begin-eloquent-insert-many
         $success = Movie::insert([
             [
                 'title' => 'Anatomy of a Fall',
@@ -38,9 +39,31 @@ public function testInsertMany(): void
         ]);
 
         echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
-        // end-insert-many
+        // end-eloquent-insert-many
 
         $this->assertTrue($success);
-        $this->expectOutputString('Insert operation success: yes');
+
+        // begin-qb-insert-many
+        $success = DB::table('movies')
+            ->insert([
+                [
+                    'title' => 'Anatomy of a Fall',
+                    'release_date' => new UTCDateTime(new DateTimeImmutable('2023-08-23')),
+                ],
+                [
+                    'title' => 'The Boy and the Heron',
+                    'release_date' => new UTCDateTime(new DateTimeImmutable('2023-12-08')),
+                ],
+                [
+                    'title' => 'Passages',
+                    'release_date' => new UTCDateTime(new DateTimeImmutable('2023-06-28')),
+                ],
+            ]);
+
+        echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
+        // end-qb-insert-many
+
+        $this->assertTrue($success);
+        $this->expectOutputString('Insert operation success: yesInsert operation success: yes');
     }
 }
diff --git a/docs/includes/usage-examples/InsertOneTest.php b/docs/includes/usage-examples/InsertOneTest.php
index 15eadf419..821029499 100644
--- a/docs/includes/usage-examples/InsertOneTest.php
+++ b/docs/includes/usage-examples/InsertOneTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class InsertOneTest extends TestCase
@@ -13,13 +14,13 @@ class InsertOneTest extends TestCase
      * @runInSeparateProcess
      * @preserveGlobalState disabled
      */
-    public function testInsertOne(): void
+    public function testEloquentInsertOne(): void
     {
         require_once __DIR__ . '/Movie.php';
 
         Movie::truncate();
 
-        // begin-insert-one
+        // begin-eloquent-insert-one
         $movie = Movie::create([
             'title' => 'Marriage Story',
             'year' => 2019,
@@ -27,9 +28,34 @@ public function testInsertOne(): void
         ]);
 
         echo $movie->toJson();
-        // end-insert-one
+        // end-eloquent-insert-one
 
         $this->assertInstanceOf(Movie::class, $movie);
+        $this->assertSame($movie->title, 'Marriage Story');
         $this->expectOutputRegex('/^{"title":"Marriage Story","year":2019,"runtime":136,"updated_at":".{27}","created_at":".{27}","_id":"[a-z0-9]{24}"}$/');
     }
+
+    /**
+     * @runInSeparateProcess
+     * @preserveGlobalState disabled
+     */
+    public function testQBInsertOne(): void
+    {
+        require_once __DIR__ . '/Movie.php';
+
+        Movie::truncate();
+
+        // begin-qb-insert-one
+        $success = DB::table('movies')
+            ->insert([
+                'title' => 'Marriage Story',
+                'year' => 2019,
+                'runtime' => 136,
+            ]);
+
+        echo 'Insert operation success: ' . ($success ? 'yes' : 'no');
+        // end-qb-insert-one
+
+        $this->expectOutputString('Insert operation success: yes');
+    }
 }
diff --git a/docs/includes/usage-examples/UpdateManyTest.php b/docs/includes/usage-examples/UpdateManyTest.php
index 49a77dd95..9d4a11ac8 100644
--- a/docs/includes/usage-examples/UpdateManyTest.php
+++ b/docs/includes/usage-examples/UpdateManyTest.php
@@ -5,6 +5,7 @@
 namespace App\Http\Controllers;
 
 use App\Models\Movie;
+use Illuminate\Support\Facades\DB;
 use MongoDB\Laravel\Tests\TestCase;
 
 class UpdateManyTest extends TestCase
@@ -35,14 +36,41 @@ public function testUpdateMany(): void
             ],
         ]);
 
-        // begin-update-many
+        // begin-eloquent-update-many
         $updates = Movie::where('imdb.rating', '>', 9.0)
             ->update(['acclaimed' => true]);
 
         echo 'Updated documents: ' . $updates;
-        // end-update-many
+        // end-eloquent-update-many
 
         $this->assertEquals(2, $updates);
-        $this->expectOutputString('Updated documents: 2');
+
+        Movie::insert([
+            [
+                'title' => 'ABCD',
+                'imdb' => [
+                    'rating' => 9.5,
+                    'votes' => 1,
+                ],
+            ],
+            [
+                'title' => 'Testing',
+                'imdb' => [
+                    'rating' => 9.3,
+                    'votes' => 1,
+                ],
+            ],
+        ]);
+
+        // begin-qb-update-many
+        $updates = DB::table('movies')
+            ->where('imdb.rating', '>', 9.0)
+            ->update(['acclaimed' => true]);
+
+        echo 'Updated documents: ' . $updates;
+        // end-qb-update-many
+
+        $this->assertEquals(2, $updates);
+        $this->expectOutputString('Updated documents: 2Updated documents: 2');
     }
 }
diff --git a/docs/includes/usage-examples/UpdateOneTest.php b/docs/includes/usage-examples/UpdateOneTest.php
index e1f864170..2ed356d5a 100644
--- a/docs/includes/usage-examples/UpdateOneTest.php
+++ b/docs/includes/usage-examples/UpdateOneTest.php
@@ -28,7 +28,7 @@ public function testUpdateOne(): void
             ],
         ]);
 
-        // begin-update-one
+        // begin-eloquent-update-one
         $updates = Movie::where('title', 'Carol')
             ->orderBy('_id')
             ->first()
@@ -40,7 +40,7 @@ public function testUpdateOne(): void
             ]);
 
         echo 'Updated documents: ' . $updates;
-        // end-update-one
+        // end-eloquent-update-one
 
         $this->assertTrue($updates);
         $this->expectOutputString('Updated documents: 1');
diff --git a/docs/includes/usage-examples/operation-description.rst b/docs/includes/usage-examples/operation-description.rst
index 68119a249..c68754475 100644
--- a/docs/includes/usage-examples/operation-description.rst
+++ b/docs/includes/usage-examples/operation-description.rst
@@ -1,2 +1,3 @@
-|operator-description| by creating a query builder, using a method such
-as ``Model::where()`` or the ``DB`` facade to match documents in a collection, and then calling |result-operation|.
+|operator-description| by using a method such as ``Model::where()`` or
+methods from the ``DB`` facade to match documents, and then calling
+|result-operation|.
diff --git a/docs/index.txt b/docs/index.txt
index 12269e0c4..d97eae635 100644
--- a/docs/index.txt
+++ b/docs/index.txt
@@ -13,21 +13,21 @@
    :titlesonly:
    :maxdepth: 1
 
-   /quick-start
-   /usage-examples
+   Quick Start </quick-start>
+   Usage Examples </usage-examples>
    Release Notes <https://github.com/mongodb/laravel-mongodb/releases/>
-   /fundamentals
-   /eloquent-models
-   /query-builder
-   /user-authentication
-   /cache
-   /queues
-   /transactions
-   /filesystems
-   /issues-and-help
-   /feature-compatibility
-   /compatibility
-   /upgrade
+   Fundamentals </fundamentals>
+   Eloquent Models </eloquent-models>
+   Query Builder </query-builder>
+   User Authentication </user-authentication>
+   Cache & Locks </cache>
+   Queues </queues>
+   Transactions </transactions>
+   GridFS Filesystems </filesystems>
+   Issues & Help </issues-and-help>
+   Feature Compatibility </feature-compatibility>
+   Compatibility </compatibility>
+   Upgrade </upgrade>
 
 Introduction
 ------------
diff --git a/docs/query-builder.txt b/docs/query-builder.txt
index 7d33c016d..990c1005c 100644
--- a/docs/query-builder.txt
+++ b/docs/query-builder.txt
@@ -46,15 +46,19 @@ The following example shows the syntax of a query builder call:
    DB::table('<collection name>')
        // chain methods by using the "->" object operator
        ->get();
+
 .. tip::
 
-   Before using the ``DB::table()`` method, ensure that you specify MongoDB as your application's
-   default database connection. For instructions on setting the database connection,
-   see the :ref:`laravel-quick-start-connect-to-mongodb` step in the Quick Start.
+   Before using the ``DB::table()`` method, ensure that you specify
+   MongoDB as your application's default database connection. For
+   instructions on setting the database connection, see the
+   :ref:`laravel-quick-start-connect-to-mongodb` step in the Quick
+   Start.
 
-   If MongoDB is not your application's default database, you can use the ``DB::connection()`` method
-   to specify a MongoDB connection. Pass the name of the connection to the ``connection()`` method,
-   as shown in the following code:
+   If MongoDB is not your application's default database, you can use
+   the ``DB::connection()`` method to specify a MongoDB connection. Pass
+   the name of the connection to the ``connection()`` method, as shown
+   in the following code:
 
    .. code-block:: php
 
@@ -63,6 +67,7 @@ The following example shows the syntax of a query builder call:
 This guide provides examples of the following types of query builder operations:
 
 - :ref:`laravel-retrieve-query-builder`
+- :ref:`laravel-options-query-builder`
 - :ref:`laravel-modify-results-query-builder`
 - :ref:`laravel-mongodb-read-query-builder`
 - :ref:`laravel-mongodb-write-query-builder`
@@ -606,6 +611,33 @@ value of ``imdb.rating`` of those matches by using the
    :start-after: begin aggregation with filter
    :end-before: end aggregation with filter
 
+.. _laravel-options-query-builder:
+
+Set Query-Level Options
+-----------------------
+
+You can modify the way that the {+odm-short+} performs operations by
+setting options on the query builder. You can pass an array of options
+to the ``options()`` query builder method to specify options for the
+query.
+
+The following code demonstrates how to attach a comment to
+a query:
+
+.. literalinclude:: /includes/query-builder/QueryBuilderTest.php
+   :language: php
+   :dedent:
+   :start-after: begin options
+   :end-before: end options
+
+The query builder accepts the same options that you can set for
+the :phpmethod:`MongoDB\Collection::find()` method in the
+{+php-library+}. Some of the options to modify query results, such as
+``skip``, ``sort``, and ``limit``, are settable directly as query
+builder methods and are described in the
+:ref:`laravel-modify-results-query-builder` section of this guide. We
+recommend that you use these methods instead of passing them as options.
+
 .. _laravel-modify-results-query-builder:
 
 Modify Query Results
diff --git a/docs/queues.txt b/docs/queues.txt
index 5e25d868b..f2a3106f7 100644
--- a/docs/queues.txt
+++ b/docs/queues.txt
@@ -11,6 +11,16 @@ Queues
 .. meta::
    :keywords: php framework, odm, code example, jobs
 
+Overview
+--------
+
+In this guide, you can learn how to use MongoDB as your database for
+Laravel Queue. Laravel Queue allows you to create queued jobs that are
+processed in the background.
+
+Configuration
+-------------
+
 To use MongoDB as your database for Laravel Queue, change
 the driver in your application's ``config/queue.php`` file:
 
@@ -22,7 +32,7 @@ the driver in your application's ``config/queue.php`` file:
            // You can also specify your jobs-specific database
            // in the config/database.php file
            'connection' => 'mongodb',
-           'collection' => 'jobs',
+           'table' => 'jobs',
            'queue' => 'default',
            // Optional setting
            // 'retry_after' => 60,
@@ -48,7 +58,7 @@ the behavior of the queue:
        ``mongodb`` connection. The driver uses the default connection if
        a connection is not specified.
 
-   * - ``collection``
+   * - ``table``
      - **Required** Name of the MongoDB collection to
        store jobs to process.
 
@@ -60,7 +70,7 @@ the behavior of the queue:
        before retrying a job that is being processed. The value is
        ``60`` by default.
 
-To use MongoDB to handle failed jobs, create a ``failed`` entry in your
+To use MongoDB to handle *failed jobs*, create a ``failed`` entry in your
 application's ``config/queue.php`` file and specify the database and
 collection:
 
@@ -69,7 +79,7 @@ collection:
    'failed' => [
        'driver' => 'mongodb',
        'database' => 'mongodb',
-       'collection' => 'failed_jobs',
+       'table' => 'failed_jobs',
    ],
 
 The following table describes properties that you can specify to configure
@@ -91,16 +101,13 @@ how to handle failed jobs:
        a ``mongodb`` connection. The driver uses the default connection
        if a connection is not specified.
 
-   * - ``collection``
+   * - ``table``
      - Name of the MongoDB collection to store failed
        jobs. The value is ``failed_jobs`` by default.
 
-Then, add the service provider in your application's
-``config/app.php`` file:
-
-.. code-block:: php
-
-   MongoDB\Laravel\MongoDBQueueServiceProvider::class,
+The {+odm-short+} automatically provides the
+``MongoDB\Laravel\MongoDBQueueServiceProvider::class`` class as the
+service provider to handle failed jobs.
 
 Job Batching
 ------------
@@ -124,7 +131,7 @@ application's ``config/queue.php`` file:
     'batching' => [
        'driver' => 'mongodb',
        'database' => 'mongodb',
-       'collection' => 'job_batches',
+       'table' => 'job_batches',
    ],
 
 The following table describes properties that you can specify to configure
@@ -146,13 +153,13 @@ job batching:
        ``mongodb`` connection. The driver uses the default connection if
        a connection is not specified.
 
-   * - ``collection``
+   * - ``table``
      - Name of the MongoDB collection to store job
        batches. The value is ``job_batches`` by default.
 
 Then, add the service provider in your application's ``config/app.php``
 file:
 
-.. code-block:: php
-
-   MongoDB\Laravel\MongoDBBusServiceProvider::class,
+The {+odm-short+} automatically provides the
+``MongoDB\Laravel\MongoDBBusServiceProvider::class`` class as the
+service provider for job batching.
diff --git a/docs/quick-start.txt b/docs/quick-start.txt
index 39d8ba0b4..1d188ad84 100644
--- a/docs/quick-start.txt
+++ b/docs/quick-start.txt
@@ -17,6 +17,16 @@ Quick Start
    :depth: 1
    :class: singlecol
 
+.. toctree::
+
+   Download & Install </quick-start/download-and-install/>
+   Create a Deployment </quick-start/create-a-deployment/>
+   Create a Connection String </quick-start/create-a-connection-string/>
+   Configure Your Connection </quick-start/configure-mongodb/>
+   View Data </quick-start/view-data/>
+   Write Data </quick-start/write-data/>
+   Next Steps </quick-start/next-steps/>
+
 Overview
 --------
 
@@ -55,14 +65,3 @@ that connects to a MongoDB deployment.
    You can download the complete web application project by cloning the
    `laravel-quickstart <https://github.com/mongodb-university/laravel-quickstart/>`__
    GitHub repository.
-
-.. toctree::
-
-   /quick-start/download-and-install/
-   /quick-start/create-a-deployment/
-   /quick-start/create-a-connection-string/
-   /quick-start/configure-mongodb/
-   /quick-start/view-data/
-   /quick-start/write-data/
-   /quick-start/next-steps/
-
diff --git a/docs/transactions.txt b/docs/transactions.txt
index 377423d67..b4a7827ba 100644
--- a/docs/transactions.txt
+++ b/docs/transactions.txt
@@ -24,8 +24,8 @@ In this guide, you can learn how to perform a **transaction** in MongoDB by
 using {+odm-long+}. Transactions let you run a sequence of write operations
 that update the data only after the transaction is committed.
 
-If the transaction fails, the {+php-library+} that manages MongoDB operations
-for the {+odm-short+} ensures that MongoDB discards all the changes made within
+If the transaction fails, the {+php-library+}, which manages MongoDB operations
+for the {+odm-short+}, ensures that MongoDB discards all the changes made within
 the transaction before they become visible. This property of transactions
 that ensures that all changes within a transaction are either applied or
 discarded is called **atomicity**.
@@ -74,15 +74,20 @@ MongoDB Server and the {+odm-short+} have the following limitations:
   you perform write operations in a transaction. To learn more about this
   limitation, see :manual:`Create Collections and Indexes in a Transaction </core/transactions/#create-collections-and-indexes-in-a-transaction>`
   in the {+server-docs-name+}.
+
 - MongoDB does not support nested transactions. If you attempt to start a
   transaction within another one, the extension raises a ``RuntimeException``.
   To learn more about this limitation, see :manual:`Transactions and Sessions </core/transactions/#transactions-and-sessions>`
   in the {+server-docs-name+}.
+
 - {+odm-long+} does not support the database testing traits
   ``Illuminate\Foundation\Testing\DatabaseTransactions`` and ``Illuminate\Foundation\Testing\RefreshDatabase``.
   As a workaround, you can create migrations with the ``Illuminate\Foundation\Testing\DatabaseMigrations``
   trait to reset the database after each test.
 
+- {+odm-long+} does not support running parallel operations within a
+  single transaction.
+
 .. _laravel-transaction-callback:
 
 Run a Transaction in a Callback
diff --git a/docs/usage-examples.txt b/docs/usage-examples.txt
index a17fd1b70..14478c004 100644
--- a/docs/usage-examples.txt
+++ b/docs/usage-examples.txt
@@ -17,6 +17,22 @@ Usage Examples
    :depth: 2
    :class: singlecol
 
+.. toctree::
+   :titlesonly:
+   :maxdepth: 1
+
+   Find a Document </usage-examples/findOne>
+   Find Multiple Documents </usage-examples/find>
+   Insert a Document </usage-examples/insertOne>
+   Insert Multiple Documents </usage-examples/insertMany>
+   Update a Document </usage-examples/updateOne>
+   Update Multiple Documents </usage-examples/updateMany>
+   Delete a Document </usage-examples/deleteOne>
+   Delete Multiple Documents </usage-examples/deleteMany>
+   Count Documents </usage-examples/count>
+   Distinct Field Values </usage-examples/distinct>
+   Run a Command </usage-examples/runCommand>
+
 Overview
 --------
 
@@ -27,6 +43,10 @@ operations. Each usage example includes the following components:
 - Example code that you can run from an application controller
 - Output displayed by the print statement
 
+To learn more about the operations demonstrated in the usage examples,
+see the :ref:`laravel-fundamentals-read-ops` and
+:ref:`laravel-fundamentals-write-ops` guides.
+
 How to Use the Usage Examples
 -----------------------------
 
@@ -89,19 +109,3 @@ See code examples of the following operations in this section:
 - :ref:`laravel-count-usage`
 - :ref:`laravel-distinct-usage`
 - :ref:`laravel-run-command-usage`
-
-.. toctree::
-   :titlesonly:
-   :maxdepth: 1
-
-   /usage-examples/findOne
-   /usage-examples/find
-   /usage-examples/insertOne
-   /usage-examples/insertMany
-   /usage-examples/updateOne
-   /usage-examples/updateMany
-   /usage-examples/deleteOne
-   /usage-examples/deleteMany
-   /usage-examples/count
-   /usage-examples/distinct
-   /usage-examples/runCommand
diff --git a/docs/usage-examples/count.txt b/docs/usage-examples/count.txt
index c3af477ee..aadd1e0c6 100644
--- a/docs/usage-examples/count.txt
+++ b/docs/usage-examples/count.txt
@@ -25,35 +25,79 @@ Count Documents
 
    .. replacement:: result-operation
 
-      the ``count()`` method to retrieve the results.
+      the ``count()`` method to retrieve the results
 
 Example
 -------
 
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Counts the documents from the ``movies`` collection that match a query filter
-- Prints the matching document count
-
-The example calls the following methods on the ``Movie`` model:
-
-- ``where()``: Matches documents in which the value of the ``genres`` field includes ``"Biography"``.
-- ``count()``: Counts the number of matching documents. This method returns an integer value.
-
-.. io-code-block::
-
-   .. input:: ../includes/usage-examples/CountTest.php
-      :start-after: begin-count
-      :end-before: end-count
-      :language: php
-      :dedent:
-
-   .. output::
-      :language: console
-      :visible: false
-
-      Number of documents: 1267
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database
+      - Counts the documents from the ``movies`` collection that match a
+        query filter
+      - Prints the matching document count
+      
+      The example calls the following methods on the ``Movie`` model:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``genres`` field includes ``"Biography"``
+      - ``count()``: Counts the number of matching documents and returns
+        the count as an integer
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/CountTest.php
+            :start-after: begin-eloquent-count
+            :end-before: end-eloquent-count
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Number of documents: 1267
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Counts the documents from the ``movies`` collection that match a
+        query filter
+      - Prints the matching document count
+      
+      The example calls the following query builder methods:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``genres`` field includes ``"Biography"``
+      - ``count()``: Counts the number of matching documents and returns
+        the count as an integer
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/CountTest.php
+            :start-after: begin-qb-count
+            :end-before: end-qb-count
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Number of documents: 1267
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
diff --git a/docs/usage-examples/deleteMany.txt b/docs/usage-examples/deleteMany.txt
index cf8680184..22cc8d183 100644
--- a/docs/usage-examples/deleteMany.txt
+++ b/docs/usage-examples/deleteMany.txt
@@ -17,48 +17,91 @@ Delete Multiple Documents
    :depth: 1
    :class: singlecol
 
-You can delete multiple documents in a collection by calling the ``delete()`` method on an
-object collection or a query builder.
+You can delete multiple documents in a collection by calling the
+``delete()`` method on an object collection or a query builder.
 
-To delete multiple documents, pass a query filter to the ``where()`` method. Then, delete the
-matching documents by calling the ``delete()`` method.
+To delete multiple documents, pass a query filter to the ``where()``
+method. Then, delete the matching documents by calling the ``delete()``
+method.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Deletes documents from the ``movies`` collection that match a query filter
-- Prints the number of deleted documents
-
-The example calls the following methods on the ``Movie`` model:
-
-- ``where()``: matches documents in which the value of the ``year`` field is less than or
-  equal to ``1910``.
-- ``delete()``: deletes the matched documents. This method returns the number
-  of documents that the method successfully deletes.
-
-.. io-code-block::
-   :copyable: true
+.. tip::
 
-   .. input:: ../includes/usage-examples/DeleteManyTest.php
-      :start-after: begin-delete-many
-      :end-before: end-delete-many
-      :language: php
-      :dedent:
+   To learn more about deleting documents with the {+odm-short+}, see
+   the :ref:`laravel-fundamentals-delete-documents` section of the Write
+   Operations guide.
 
-   .. output::
-      :language: console
-      :visible: false
+Example
+-------
 
-      Deleted documents: 7
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database 
+      - Deletes documents from the ``movies`` collection that match a
+        query filter
+      - Prints the number of deleted documents
+      
+      The example calls the following methods on the ``Movie`` model:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``year`` field is less than or equal to ``1910``
+      - ``delete()``: Deletes the matched documents and returns the
+        number of documents successfully deleted
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/DeleteManyTest.php
+            :start-after: begin-eloquent-delete-many
+            :end-before: end-eloquent-delete-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Deleted documents: 7
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Deletes documents from the ``movies`` collection that match a
+        query filter
+      - Prints the number of deleted documents
+      
+      The example calls the following query builder methods:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``year`` field is less than or equal to ``1910``
+      - ``delete()``: Deletes the matched documents and returns the
+        number of documents successfully deleted
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/DeleteManyTest.php
+            :start-after: begin-qb-delete-many
+            :end-before: end-qb-delete-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Deleted documents: 7
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn more about deleting documents with the {+odm-short+}, see the :ref:`laravel-fundamentals-delete-documents`
-   section of the Write Operations guide.
-
diff --git a/docs/usage-examples/deleteOne.txt b/docs/usage-examples/deleteOne.txt
index 1298255da..8a88c0241 100644
--- a/docs/usage-examples/deleteOne.txt
+++ b/docs/usage-examples/deleteOne.txt
@@ -17,50 +17,93 @@ Delete a Document
    :depth: 1
    :class: singlecol
 
-You can delete a document in a collection by retrieving a single Eloquent model and calling
-the ``delete()`` method, or by calling ``delete()`` directly on a query builder.
+You can delete a document in a collection by retrieving a single
+Eloquent model and calling the ``delete()`` method, or by calling
+``delete()`` directly on a query builder.
 
-To delete a document, pass a query filter to the ``where()`` method, sort the matching documents,
-and call the ``limit()`` method to retrieve only the first document. Then, delete this matching
-document by calling the ``delete()`` method.
+To delete a document, pass a query filter to the ``where()`` method,
+sort the matching documents, and call the ``limit()`` method to retrieve
+only the first document. Then, delete this matching document by calling
+the ``delete()`` method.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Deletes a document from the ``movies`` collection that matches a query filter
-- Prints the number of deleted documents
-
-The example calls the following methods on the ``Movie`` model:
-
-- ``where()``: matches documents in which the value of the ``title`` field is ``"Quiz Show"``
-- ``orderBy()``: sorts matched documents by their ascending ``_id`` values
-- ``limit()``: retrieves only the first matching document
-- ``delete()``: deletes the retrieved document
-
-.. io-code-block::
-   :copyable: true
+.. tip::
 
-   .. input:: ../includes/usage-examples/DeleteOneTest.php
-      :start-after: begin-delete-one
-      :end-before: end-delete-one
-      :language: php
-      :dedent:
+   To learn more about deleting documents with the {+odm-short+}, see
+   the :ref:`laravel-fundamentals-delete-documents` section of the Write
+   Operations guide.
 
-   .. output::
-      :language: console
-      :visible: false
+Example
+-------
 
-      Deleted documents: 1
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database
+      - Deletes a document from the ``movies`` collection that matches a
+        query filter
+      - Prints the number of deleted documents
+      
+      The example calls the following methods on the ``Movie`` model:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``title`` field is ``"Quiz Show"``
+      - ``limit()``: Retrieves only the first matching document
+      - ``delete()``: Deletes the retrieved document
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/DeleteOneTest.php
+            :start-after: begin-eloquent-delete-one
+            :end-before: end-eloquent-delete-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Deleted documents: 1
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Deletes a document from the ``movies`` collection that matches a
+        query filter
+      - Prints the number of deleted documents
+      
+      The example calls the following query builder methods:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``title`` field is ``"Quiz Show"``
+      - ``limit()``: Retrieves only the first matching document
+      - ``delete()``: Deletes the retrieved document
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/DeleteOneTest.php
+            :start-after: begin-qb-delete-one
+            :end-before: end-qb-delete-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Deleted documents: 1
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn more about deleting documents with the {+odm-short+}, see the `Deleting Models
-   <https://laravel.com/docs/{+laravel-docs-version+}/eloquent#deleting-models>`__ section of the
-   Laravel documentation.
-
diff --git a/docs/usage-examples/distinct.txt b/docs/usage-examples/distinct.txt
index 5d62ec8be..cfe1e4644 100644
--- a/docs/usage-examples/distinct.txt
+++ b/docs/usage-examples/distinct.txt
@@ -17,50 +17,99 @@ Retrieve Distinct Field Values
    :depth: 1
    :class: singlecol
 
-You can retrieve distinct field values of documents in a collection by calling the ``distinct()``
-method on an object collection or a query builder.
+You can retrieve distinct field values of documents in a collection by
+calling the ``distinct()`` method on an object collection or a query
+builder.
 
-To retrieve distinct field values, pass a query filter to the ``where()`` method and a field name
-to the ``select()`` method. Then, call ``distinct()`` to return the unique values of the selected
-field in documents that match the query filter.
+To retrieve distinct field values, pass a query filter to the
+``where()`` method and a field name to the ``select()`` method. Then,
+call ``distinct()`` to return the unique values of the selected field in
+documents that match the query filter.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Retrieves distinct field values of documents from the ``movies`` collection that match a query filter
-- Prints the distinct values
-
-The example calls the following methods on the ``Movie`` model:
-
-- ``where()``: matches documents in which the value of the ``directors`` field includes ``"Sofia Coppola"``.
-- ``select()``: retrieves the matching documents' ``imdb.rating`` field values.
-- ``distinct()``: retrieves the unique values of the selected field and returns
-  the list of values.
-- ``get()``: retrieves the query results.
-
-.. io-code-block::
-   :copyable: true
+.. tip::
 
-   .. input:: ../includes/usage-examples/DistinctTest.php
-      :start-after: begin-distinct
-      :end-before: end-distinct
-      :language: php
-      :dedent:
+   For more information about query filters, see the
+   :ref:`laravel-retrieve-matching` section of the Read Operations
+   guide.
 
-   .. output::
-      :language: console
-      :visible: false
+Example
+-------
 
-      [[5.6],[6.4],[7.2],[7.8]]
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database 
+      - Retrieves distinct field values of documents from the ``movies``
+        collection that match a query filter
+      - Prints the distinct values
+      
+      The example calls the following methods on the ``Movie`` model:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``directors`` field includes ``"Sofia Coppola"``
+      - ``select()``: Retrieves the matching documents' ``imdb.rating``
+        field values
+      - ``distinct()``: Retrieves the unique values of the selected
+        field and returns the list of values
+      - ``get()``: Retrieves the query results
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/DistinctTest.php
+            :start-after: begin-eloquent-distinct
+            :end-before: end-eloquent-distinct
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            [[5.6],[6.4],[7.2],[7.8]]
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Retrieves distinct field values of documents from the ``movies``
+        collection that match a query filter
+      - Prints the distinct values
+
+      The example calls the following query builder methods:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``directors`` field includes ``"Sofia Coppola"``
+      - ``select()``: Retrieves the matching documents' ``imdb.rating``
+        field values
+      - ``distinct()``: Retrieves the unique values of the selected
+        field and returns the list of values
+      - ``get()``: Retrieves the query results
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/DistinctTest.php
+            :start-after: begin-qb-distinct
+            :end-before: end-qb-distinct
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            [5.6,6.4,7.2,7.8]
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   For more information about query filters, see the :ref:`laravel-retrieve-matching` section of
-   the Read Operations guide.
-
diff --git a/docs/usage-examples/find.txt b/docs/usage-examples/find.txt
index 957ece537..187676392 100644
--- a/docs/usage-examples/find.txt
+++ b/docs/usage-examples/find.txt
@@ -25,66 +25,115 @@ Find Multiple Documents
 
    .. replacement:: result-operation
 
-      the ``get()`` method to retrieve the results.
+      the ``get()`` method to retrieve the results
 
 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
+matching documents according to their :term:`natural order` in the collection 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.
+.. tip::
+
+   To learn about other ways to retrieve documents with the
+   {+odm-short+}, see the :ref:`laravel-fundamentals-retrieve` 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",
-          ...,
-        },
-        ...
-      ]
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This 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-eloquent-find
+            :end-before: end-eloquent-find
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            // Results are truncated
+      
+            [
+              {
+                "_id": ...,
+                "runtime": 1256,
+                "title": "Centennial",
+                ...,
+              },
+              {
+                "_id": ...,
+                "runtime": 1140,
+                "title": "Baseball",
+                ...,
+              },
+              ...
+            ]
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Retrieves and prints documents from the ``movies`` collection
+        that match a query filter
+
+      The example calls the following query builder methods:
+      
+      - ``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::
+      
+         .. input:: ../includes/usage-examples/FindManyTest.php
+            :start-after: begin-qb-find
+            :end-before: end-qb-find
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            // Results are truncated
+      
+            Illuminate\Support\Collection Object ( [items:protected] =>
+            Array ( [0] => Array ( [_id] => ... [runtime] => 1256
+            [title] => Centennial [1] => Array
+            ( [_id] => ... [runtime] => 1140
+            [title] => Baseball ) ...
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn about other ways to retrieve documents with the {+odm-short+}, see the
-   :ref:`laravel-fundamentals-retrieve` guide.
diff --git a/docs/usage-examples/findOne.txt b/docs/usage-examples/findOne.txt
index aa0e035f1..d5df8aae1 100644
--- a/docs/usage-examples/findOne.txt
+++ b/docs/usage-examples/findOne.txt
@@ -19,52 +19,97 @@ Find a Document
 
    .. replacement:: result-operation
 
-      the ``first()`` method to return one document.
+      the ``first()`` method to return one document
 
-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.
+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
-- Prints the retrieved document
-
-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:
+.. tip::
 
-   .. output::
-      :language: console
-      :visible: false
+   To learn about other ways to retrieve documents with the
+   {+odm-short+}, see the :ref:`laravel-fundamentals-retrieve` guide.
 
-      // Result is truncated
+Example
+-------
 
-      {
-        "_id": ...,
-        "title": "This Is Spinal Tap",
-        "directors": [ "Rob Reiner" ],
-         ...
-      }
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This 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
+      - Prints the retrieved document
+      
+      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::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/FindOneTest.php
+            :start-after: begin-eloquent-find-one
+            :end-before: end-eloquent-find-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            // Result is truncated
+      
+            {
+              "_id": ...,
+              "title": "This Is Spinal Tap",
+              "directors": [ "Rob Reiner" ],
+               ...
+            }
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Retrieves a document from the ``movies`` collection that matches
+        a query filter
+      - Prints the ``title`` field of the retrieved document
+
+      The example calls the following query builder methods:
+      
+      - ``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-qb-find-one
+            :end-before: end-qb-find-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            This Is Spinal Tap
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn more about retrieving documents with the {+odm-short+}, see the
-   :ref:`laravel-fundamentals-retrieve` guide.
diff --git a/docs/usage-examples/insertMany.txt b/docs/usage-examples/insertMany.txt
index 2d59a78ab..48acfe17e 100644
--- a/docs/usage-examples/insertMany.txt
+++ b/docs/usage-examples/insertMany.txt
@@ -24,40 +24,78 @@ To insert multiple documents, call the ``insert()`` method and specify the new d
 as an array inside the method call. Each array entry contains a single document's field
 values.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Inserts documents into the ``movies`` collection
-- Prints whether the insert operation succeeds
-
-The example calls the ``insert()`` method to insert documents that contain
-information about movies released in ``2023``. If the insert operation is
-successful, it returns a value of ``1``. If the operation fails, it throws
-an exception.
-
-.. io-code-block::
-   :copyable: true
+.. tip::
 
-   .. input:: ../includes/usage-examples/InsertManyTest.php
-      :start-after: begin-insert-many
-      :end-before: end-insert-many
-      :language: php
-      :dedent:
+   To learn more about insert operations, see the
+   :ref:`laravel-fundamentals-insert-documents` section 
+   of the Write Operations guide.
 
-   .. output::
-      :language: console
-      :visible: false
+Example
+-------
 
-      Insert operation success: yes
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database 
+      - Inserts documents into the ``movies`` collection
+      - Prints whether the insert operation succeeds
+      
+      The example calls the ``insert()`` method to insert documents that represent
+      movies released in ``2023``. If the insert operation is
+      successful, it returns a value of ``1``. If the operation fails, it throws
+      an exception.
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/InsertManyTest.php
+            :start-after: begin-eloquent-insert-many
+            :end-before: end-eloquent-insert-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Insert operation success: yes
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Inserts documents into the ``movies`` collection
+      - Prints whether the insert operation succeeds
+
+      The example calls the ``insert()`` method to insert documents that represent
+      movies released in ``2023``. If the insert operation is
+      successful, it returns a value of ``1``. If the operation fails, it throws
+      an exception.
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/InsertManyTest.php
+            :start-after: begin-qb-insert-many
+            :end-before: end-qb-insert-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            Insert operation success: yes
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn more about insert operations, see the :ref:`laravel-fundamentals-insert-documents` section
-   of the Write Operations guide.
-
diff --git a/docs/usage-examples/insertOne.txt b/docs/usage-examples/insertOne.txt
index e28e12090..1a246ab72 100644
--- a/docs/usage-examples/insertOne.txt
+++ b/docs/usage-examples/insertOne.txt
@@ -23,50 +23,90 @@ an Eloquent model or query builder.
 To insert a document, pass the data you need to insert as a document containing
 the fields and values to the ``create()`` method.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Inserts a document into the ``movies`` collection
-
-The example calls the ``create()`` method to insert a document that contains the following
-information:
-
-- ``title`` value of ``"Marriage Story"``
-- ``year`` value of ``2019``
-- ``runtime`` value of ``136``
-
-.. io-code-block::
-   :copyable: true
+.. tip::
 
-   .. input:: ../includes/usage-examples/InsertOneTest.php
-      :start-after: begin-insert-one
-      :end-before: end-insert-one
-      :language: php
-      :dedent:
+   You can also use the ``save()`` or ``insert()`` methods to insert a
+   document into a collection. To learn more about insert operations,
+   see the :ref:`laravel-fundamentals-insert-documents` section of the
+   Write Operations guide.
 
-   .. output::
-      :language: json
-      :visible: false
+Example
+-------
 
-      {
-          "title": "Marriage Story",
-          "year": 2019,
-          "runtime": 136,
-          "updated_at": "...",
-          "created_at": "...",
-          "_id": "..."
-      }
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database 
+      - Inserts a document into the ``movies`` collection
+      - Prints the newly inserted document
+      
+      The example calls the ``create()`` method to insert a document
+      that contains the following fields and values:
+
+      - ``title`` value of ``"Marriage Story"``
+      - ``year`` value of ``2019``
+      - ``runtime`` value of ``136``
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/InsertOneTest.php
+            :start-after: begin-eloquent-insert-one
+            :end-before: end-eloquent-insert-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            {
+                "title": "Marriage Story",
+                "year": 2019,
+                "runtime": 136,
+                "updated_at": "...",
+                "created_at": "...",
+                "_id": "..."
+            }
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Inserts a document into the ``movies`` collection
+      - Prints whether the insert operation succeeds
+
+      The example calls the ``insert()`` method to insert a document
+      that contains the following fields and values:
+
+      - ``title`` value of ``"Marriage Story"``
+      - ``year`` value of ``2019``
+      - ``runtime`` value of ``136``
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/InsertOneTest.php
+            :start-after: begin-qb-insert-one
+            :end-before: end-qb-insert-one
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            Insert operation success: yes
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   You can also use the ``save()`` or ``insert()`` methods to insert a document into a collection.
-   To learn more about insert operations, see the :ref:`laravel-fundamentals-insert-documents` section
-   of the Write Operations guide.
-
-
diff --git a/docs/usage-examples/updateMany.txt b/docs/usage-examples/updateMany.txt
index 89c262da7..c2c83ce1c 100644
--- a/docs/usage-examples/updateMany.txt
+++ b/docs/usage-examples/updateMany.txt
@@ -24,43 +24,85 @@ Pass a query filter to the ``where()`` method to retrieve documents that meet a
 set of criteria. Then, update the matching documents by passing your intended
 document changes to the ``update()`` method.
 
-Example
--------
-
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Updates documents from the ``movies`` collection that match a query filter
-- Prints the number of updated documents
-
-The example calls the following methods on the ``Movie`` model:
-
-- ``where()``: matches documents in which the value of the ``imdb.rating`` nested field
-  is greater than ``9.0``.
-- ``update()``: updates the matching documents by adding an ``acclaimed`` field and setting
-  its value to ``true``. This method returns the number of documents that were successfully
-  updated.
-
-.. io-code-block::
-   :copyable: true
-
-   .. input:: ../includes/usage-examples/UpdateManyTest.php
-      :start-after: begin-update-many
-      :end-before: end-update-many
-      :language: php
-      :dedent:
-
-   .. output::
-      :language: console
-      :visible: false
-
-      Updated documents: 20
-
-.. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
 .. tip::
 
    To learn more about updating data with the {+odm-short+}, see the :ref:`laravel-fundamentals-modify-documents`
    section of the Write Operations guide.
 
+Example
+-------
+
+Select from the following :guilabel:`Eloquent` and :guilabel:`Query
+Builder` tabs to view usage examples for the same operation that use
+each corresponding query syntax:
+
+.. tabs::
+
+   .. tab:: Eloquent
+      :tabid: eloquent-model-count
+
+      This example performs the following actions:
+      
+      - Uses the ``Movie`` Eloquent model to represent the ``movies``
+        collection in the ``sample_mflix`` database 
+      - Updates documents from the ``movies`` collection that match a
+        query filter
+      - Prints the number of updated documents
+      
+      The example calls the following methods on the ``Movie`` model:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``imdb.rating`` nested field is greater than ``9.0``
+      - ``update()``: Updates the matching documents by adding an
+        ``acclaimed`` field and setting its value to ``true``, then
+        returns the number of updated documents
+      
+      .. io-code-block::
+         :copyable: true
+      
+         .. input:: ../includes/usage-examples/UpdateManyTest.php
+            :start-after: begin-eloquent-update-many
+            :end-before: end-eloquent-update-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+      
+            Updated documents: 20
+
+   .. tab:: Query Builder
+      :tabid: query-builder-count
+
+      This example performs the following actions:
+      
+      - Accesses the ``movies`` collection by calling the ``table()``
+        method from the ``DB`` facade
+      - Updates documents from the ``movies`` collection that match a
+        query filter
+      - Prints the number of updated documents
+
+      The example calls the following query builder methods:
+      
+      - ``where()``: Matches documents in which the value of the
+        ``imdb.rating`` nested field is greater than ``9.0``
+      - ``update()``: Updates the matching documents by adding an
+        ``acclaimed`` field and setting its value to ``true``, then
+        returns the number of updated documents
+      
+      .. io-code-block::
+      
+         .. input:: ../includes/usage-examples/UpdateManyTest.php
+            :start-after: begin-qb-update-many
+            :end-before: end-qb-update-many
+            :language: php
+            :dedent:
+      
+         .. output::
+            :language: console
+            :visible: false
+
+            Updated documents: 20
+
+.. include:: /includes/usage-examples/fact-edit-laravel-app.rst
diff --git a/docs/usage-examples/updateOne.txt b/docs/usage-examples/updateOne.txt
index ecdc8982d..785ba3b09 100644
--- a/docs/usage-examples/updateOne.txt
+++ b/docs/usage-examples/updateOne.txt
@@ -17,37 +17,46 @@ Update a Document
    :depth: 1
    :class: singlecol
 
-You can update a document in a collection by retrieving a single document and calling
-the ``update()`` method on an Eloquent model or a query builder.
+You can update a document in a collection by retrieving a single
+document and calling the ``update()`` method on an Eloquent model.
 
-Pass a query filter to the ``where()`` method, sort the matching documents, and call the
-``first()`` method to retrieve only the first document. Then, update this matching document
-by passing your intended document changes to the ``update()`` method.
+Pass a query filter to the ``where()`` method, sort the matching
+documents, and call the ``first()`` method to retrieve only the first
+document. Then, update this matching document by passing your intended
+document changes to the ``update()`` method.
+
+.. tip::
+
+   To learn more about updating data with the {+odm-short+}, see the :ref:`laravel-fundamentals-modify-documents`
+   section of the Write Operations guide.
 
 Example
 -------
 
-This usage example performs the following actions:
-
-- Uses the ``Movie`` Eloquent model to represent the ``movies`` collection in the
-  ``sample_mflix`` database
-- Updates a document from the ``movies`` collection that matches the query filter
+This example performs the following actions:
+      
+- Uses the ``Movie`` Eloquent model to represent the ``movies``
+  collection in the ``sample_mflix`` database 
+- Updates a document from the ``movies`` collection that matches
+  the query filter
 - Prints the number of updated documents
 
 The example calls the following methods on the ``Movie`` model:
 
-- ``where()``: matches documents in which the value of the ``title`` field is ``"Carol"``.
-- ``orderBy()``: sorts matched documents by their ascending ``_id`` values.
-- ``first()``: retrieves only the first matching document.
-- ``update()``: updates the value of the ``imdb.rating`` nested field to from ``6.9`` to
-  ``7.3`` and the value of the ``imdb.votes`` nested field from ``493`` to ``142000``.
+- ``where()``: Matches documents in which the value of the
+  ``title`` field is ``"Carol"``
+- ``orderBy()``: Sorts matched documents by their ascending ``_id`` values
+- ``first()``: Retrieves only the first matching document
+- ``update()``: Updates the value of the ``imdb.rating`` nested
+  field to from ``6.9`` to ``7.3`` and the value of the
+  ``imdb.votes`` nested field from ``493`` to ``142000``
 
 .. io-code-block::
    :copyable: true
 
    .. input:: ../includes/usage-examples/UpdateOneTest.php
-      :start-after: begin-update-one
-      :end-before: end-update-one
+      :start-after: begin-eloquent-update-one
+      :end-before: end-eloquent-update-one
       :language: php
       :dedent:
 
@@ -58,9 +67,3 @@ The example calls the following methods on the ``Movie`` model:
       Updated documents: 1
 
 .. include:: /includes/usage-examples/fact-edit-laravel-app.rst
-
-.. tip::
-
-   To learn more about updating data with the {+odm-short+}, see the :ref:`laravel-fundamentals-modify-documents`
-   section of the Write Operations guide.
-
diff --git a/src/Connection.php b/src/Connection.php
index a0affa56a..35a27378a 100644
--- a/src/Connection.php
+++ b/src/Connection.php
@@ -66,7 +66,7 @@ public function __construct(array $config)
         $this->connection = $this->createConnection($dsn, $config, $options);
 
         // Select database
-        $this->db = $this->connection->selectDatabase($this->getDefaultDatabaseName($dsn, $config));
+        $this->db = $this->connection->getDatabase($this->getDefaultDatabaseName($dsn, $config));
 
         $this->tablePrefix = $config['prefix'] ?? '';
 
@@ -117,7 +117,7 @@ public function table($table, $as = null)
      */
     public function getCollection($name)
     {
-        return new Collection($this, $this->db->selectCollection($this->tablePrefix . $name));
+        return new Collection($this, $this->db->getCollection($this->tablePrefix . $name));
     }
 
     /** @inheritdoc */
diff --git a/src/Eloquent/Builder.php b/src/Eloquent/Builder.php
index da96b64f1..c36562425 100644
--- a/src/Eloquent/Builder.php
+++ b/src/Eloquent/Builder.php
@@ -6,7 +6,7 @@
 
 use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
 use MongoDB\Driver\Cursor;
-use MongoDB\Driver\Exception\WriteException;
+use MongoDB\Driver\Exception\BulkWriteException;
 use MongoDB\Laravel\Connection;
 use MongoDB\Laravel\Helpers\QueriesRelationships;
 use MongoDB\Laravel\Query\AggregationBuilder;
@@ -222,7 +222,7 @@ public function createOrFirst(array $attributes = [], array $values = [])
 
         try {
             return $this->create(array_merge($attributes, $values));
-        } catch (WriteException $e) {
+        } catch (BulkWriteException $e) {
             if ($e->getCode() === self::DUPLICATE_KEY_ERROR) {
                 return $this->where($attributes)->first() ?? throw $e;
             }
diff --git a/src/MongoDBServiceProvider.php b/src/MongoDBServiceProvider.php
index 0932048c9..c385c5dd4 100644
--- a/src/MongoDBServiceProvider.php
+++ b/src/MongoDBServiceProvider.php
@@ -108,7 +108,7 @@ private function registerFlysystemAdapter(): void
                     }
 
                     $bucket = $connection->getMongoClient()
-                        ->selectDatabase($config['database'] ?? $connection->getDatabaseName())
+                        ->getDatabase($config['database'] ?? $connection->getDatabaseName())
                         ->selectGridFSBucket(['bucketName' => $config['bucket'] ?? 'fs', 'disableMD5' => true]);
                 }
 
diff --git a/src/Schema/Builder.php b/src/Schema/Builder.php
index e31a1efe1..30127d339 100644
--- a/src/Schema/Builder.php
+++ b/src/Schema/Builder.php
@@ -143,7 +143,7 @@ public function getTables()
         $collections = [];
 
         foreach ($db->listCollectionNames() as $collectionName) {
-            $stats = $db->selectCollection($collectionName)->aggregate([
+            $stats = $db->getCollection($collectionName)->aggregate([
                 ['$collStats' => ['storageStats' => ['scale' => 1]]],
                 ['$project' => ['storageStats.totalSize' => 1]],
             ])->toArray();
@@ -176,7 +176,7 @@ public function getTableListing()
 
     public function getColumns($table)
     {
-        $stats = $this->connection->getMongoDB()->selectCollection($table)->aggregate([
+        $stats = $this->connection->getMongoDB()->getCollection($table)->aggregate([
             // Sample 1,000 documents to get a representative sample of the collection
             ['$sample' => ['size' => 1_000]],
             // Convert each document to an array of fields
@@ -224,7 +224,7 @@ public function getColumns($table)
 
     public function getIndexes($table)
     {
-        $indexes = $this->connection->getMongoDB()->selectCollection($table)->listIndexes();
+        $indexes = $this->connection->getMongoDB()->getCollection($table)->listIndexes();
 
         $indexList = [];
         foreach ($indexes as $index) {
diff --git a/tests/QueryBuilderTest.php b/tests/QueryBuilderTest.php
index 1a87ee430..7975518bc 100644
--- a/tests/QueryBuilderTest.php
+++ b/tests/QueryBuilderTest.php
@@ -156,7 +156,7 @@ public function testFindWithTimeout()
         $id = DB::table('users')->insertGetId(['name' => 'John Doe']);
 
         $subscriber = new class implements CommandSubscriber {
-            public function commandStarted(CommandStartedEvent $event)
+            public function commandStarted(CommandStartedEvent $event): void
             {
                 if ($event->getCommandName() !== 'find') {
                     return;
@@ -166,11 +166,11 @@ public function commandStarted(CommandStartedEvent $event)
                 Assert::assertSame(1000, $event->getCommand()->maxTimeMS);
             }
 
-            public function commandFailed(CommandFailedEvent $event)
+            public function commandFailed(CommandFailedEvent $event): void
             {
             }
 
-            public function commandSucceeded(CommandSucceededEvent $event)
+            public function commandSucceeded(CommandSucceededEvent $event): void
             {
             }
         };