<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # MongoDB PHP 教程 > 原文: [http://zetcode.com/db/mongodbphp/](http://zetcode.com/db/mongodbphp/) 在本教程中,我們將展示如何在 PHP 中使用 MongoDB。 我們將新的`mongodb`驅動程序用于 PHP。 在 ZetCode 上有一個簡潔的 [PHP 教程](/lang/php/)。 [Tweet](https://twitter.com/share) MongoDB 是 NoSQL 跨平臺的面向文檔的數據庫。 它是可用的最受歡迎的數據庫之一。 MongoDB 由 MongoDB Inc. 開發,并作為免費和開源軟件發布。 MongoDB 中的記錄是一個文檔,它是由字段和值對組成的數據結構。 MongoDB 文檔與 JSON 對象相似。 字段的值可以包括其他文檔,數組和文檔數組。 MongoDB 將文檔存儲在集合中。 集合類似于關系數據庫中的表,文檔類似于行。 ## 安裝 MongoDB 以下命令可用于在基于 Debian 的 Linux 上安裝 MongoDB。 ```php $ sudo apt-get install mongodb ``` 該命令將安裝 MongoDB 隨附的必要包。 ```php $ sudo service mongodb status mongodb start/running, process 975 ``` 使用`sudo service mongodb status`命令,我們檢查`mongodb`服務器的狀態。 ```php $ sudo service mongodb start mongodb start/running, process 6448 ``` `mongodb`服務器由`sudo service mongodb start`命令啟動。 ## 建立數據庫 `mongo`工具是 MongoDB 的交互式 JavaScript Shell 界面,它為系統管理員提供了一個界面,并為開發者提供了一種直接測試數據庫查詢和操作的方法。 ```php $ mongo testdb MongoDB shell version: 2.4.9 connecting to: testdb > db testdb > db.cars.insert({name: "Audi", price: 52642}) > db.cars.insert({name: "Mercedes", price: 57127}) > db.cars.insert({name: "Skoda", price: 9000}) > db.cars.insert({name: "Volvo", price: 29000}) > db.cars.insert({name: "Bentley", price: 350000}) > db.cars.insert({name: "Citroen", price: 21000}) > db.cars.insert({name: "Hummer", price: 41400}) > db.cars.insert({name: "Volkswagen", price: 21600}) ``` 我們創建一個`testdb`數據庫,并在`cars`集合中插入八個文檔。 ## 安裝 PHP 驅動程序 有兩種驅動程序可用:舊版`mongo`驅動程序和新版`mongodb`驅動程序。 在本教程中,我們將使用新的`mongodb`驅動程序。 接下來,我們展示如何手動安裝 PHP MongoDB 驅動程序。 ```php $ git clone https://github.com/mongodb/mongo-php-driver.git $ cd mongo-php-driver $ git submodule sync && git submodule update --init $ phpize $ ./configure $ make $ sudo make install ``` 我們下載源代碼并從中安裝驅動程序。 ```php extension=mongodb.so ``` 我們將`mongodb.so`擴展名添加到`php.ini`文檔中。 ## 數據庫統計 第一個示例連接到`testdb`數據庫并獲取其統計信息。 `MongoDB\Driver\Manager`負責維護與 MongoDB 的連接。 `MongoDB\Driver\Command`表示數據庫命令。 成功后,命令返回`MongoDB\Driver\Cursor`。 `dbstats.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $stats = new MongoDB\Driver\Command(["dbstats" => 1]); $res = $mng->executeCommand("testdb", $stats); $stats = current($res->toArray()); print_r($stats); } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該示例連接到`testdb`數據庫并執行`dbstats`命令。 它顯示了一些數據庫統計信息。 ```php $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); ``` 使用`MongoDB\Driver\Manager`類,我們連接到`testdb`數據庫。 27017 是 MongoDB 服務器監聽的默認端口。 ```php $res = $mng->executeCommand("testdb", $stats); ``` `MongoDB\Driver\Command`用于執行`dbstats`命令。 ```php $stats = current($res->toArray()); ``` `toArray()`方法返回一個數組,其中包含此游標的所有結果,`current()`函數返回該數組的當前元素。 在我們的例子中,數組只有一個元素。 ```php print_r($stats); ``` `print_r()`函數打印`$stats`變量的人類可讀表示。 ```php $ php dbstats.php stdClass Object ( [db] => testdb [collections] => 3 [objects] => 12 [avgObjSize] => 52.666666666667 [dataSize] => 632 [storageSize] => 12288 [numExtents] => 3 [indexes] => 1 [indexSize] => 8176 [fileSize] => 201326592 [nsSizeMB] => 16 [dataFileVersion] => stdClass Object ( [major] => 4 [minor] => 5 ) [ok] => 1 ) ``` 這是`dbstats.php`程序的輸出。 ## 列出數據庫 `listDatabases`命令提供所有現有數據庫的列表。 `list_databases.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $listdatabases = new MongoDB\Driver\Command(["listDatabases" => 1]); $res = $mng->executeCommand("admin", $listdatabases); $databases = current($res->toArray()); foreach ($databases->databases as $el) { echo $el->name . "\n"; } } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該示例在 MongoDB 中打印可用的數據庫。 ```php $listdatabases = new MongoDB\Driver\Command(["listDatabases" => 1]); $res = $mng->executeCommand("admin", $listdatabases); ``` 我們執行`listDatabases`命令。 該命令在`admin`數據庫上執行。 ```php $databases = current($res->toArray()); ``` 該命令返回單個結果文檔,其中包含`databases`數組字段中所有數據庫的信息。 ```php foreach ($databases->databases as $el) { echo $el->name . "\n"; } ``` 我們遍歷數據庫數組并打印可用數據庫的名稱。 ```php $ php list_databases.php testdb test local ``` 在本地計算機上,我們具有這三個數據庫。 ## 讀取數據 `MongoDB\Driver\Query`是代表數據庫查詢的值對象。 `read_all.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $query = new MongoDB\Driver\Query([]); $rows = $mng->executeQuery("testdb.cars", $query); foreach ($rows as $row) { echo "$row->name : $row->price\n"; } } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該示例從`testdb.cars`集合讀取所有數據。 ```php $query = new MongoDB\Driver\Query([]); ``` 創建一個`MongoDB\Driver\Query`對象。 如果我們傳遞一個空數組,它將讀取所有數據。 ```php $rows = $mng->executeQuery("testdb.cars", $query); ``` `executeQuery()`執行查詢。 第一個參數是集合名稱,第二個參數是查詢。 ```php foreach ($rows as $row) { echo "$row->name : $row->price\n"; } ``` 我們遍歷所有匹配的文檔。 ```php $ php read_all.php Audi : 52642 Mercedes : 57127 Skoda : 9000 Volvo : 29000 Bentley : 350000 Citroen : 21000 Hummer : 41400 Volkswagen : 21600 ``` 這是`read_all.php`腳本的輸出。 ## 過濾數據 `MongoDB\Driver\Query`包含用于過濾數據的過濾參數。 `filtering.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $filter = [ 'name' => 'Volkswagen' ]; $query = new MongoDB\Driver\Query($filter); $res = $mng->executeQuery("testdb.cars", $query); $car = current($res->toArray()); if (!empty($car)) { echo $car->name, ": ", $car->price, PHP_EOL; } else { echo "No match found\n"; } } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該示例搜索大眾汽車的價格。 ```php $filter = [ 'name' => 'Volkswagen' ]; $query = new MongoDB\Driver\Query($filter); ``` 我們將過濾器參數提供給`MongoDB\Driver\Query`。 ```php $car = current($res->toArray()); if (!empty($car)) { echo $car->name, ": ", $car->price, PHP_EOL; } else { echo "No match found\n"; } ``` 我們會打印所選汽車的名稱和價格。 我們使用`empty()`函數確保返回的變量不為空。 ```php $ php filtering.php Volkswagen: 21600 ``` 這是`filtering.php`腳本的輸出。 ## 投影 投影可用于指定應返回哪些字段。 `projection.php` ```php <?php try { $filter = []; $options = ["projection" => ['_id' => 0]]; $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $query = new MongoDB\Driver\Query($filter, $options); $rows = $mng->executeQuery("testdb.cars", $query); foreach ($rows as $row) { print_r($row); } } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 在示例中,我們隱藏了第一個字段`_id`。 ```php $options = ["projection" => ['_id' => 0]]; ``` 投影以`projection`數組指定。 在這里,我們隱藏`_id`字段。 ```php $query = new MongoDB\Driver\Query($filter, $options); ``` 投影在`MongoDB\Driver\Query`的第二個參數中傳遞。 ```php $ php projection.php stdClass Object ( [name] => Audi [price] => 52642 ) stdClass Object ( [name] => Mercedes [price] => 57127 ) ... ``` 這是`projection.php`腳本的部分輸出。 僅返回名稱和價格字段。 ## 限制數據輸出 `limit`查詢選項指定要返回的文檔數,`sort`選項指定排序順序。 `read_limit.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $query = new MongoDB\Driver\Query([], ['sort' => [ 'name' => 1], 'limit' => 5]); $rows = $mng->executeQuery("testdb.cars", $query); foreach ($rows as $row) { echo "$row->name : $row->price\n"; } } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該示例從`testdb.cars`集合中讀取所有數據,將輸出限制為五輛汽車,并按照汽車名稱升序排序。 ```php $query = new MongoDB\Driver\Query([], ['sort' => [ 'name' => 1], 'limit' => 5]); ``` 我們在查詢的第二個參數中指定`sort`和`limit`選項。 ```php $ php read_limit.php Audi : 52642 Bentley : 350000 Citroen : 21000 Hummer : 41400 Mercedes : 57127 ``` 這是`read_limit.php`腳本的輸出。 ## 批量寫入 `MongoDB\Driver\Manager::executeBulkWrite`方法執行一個或多個寫操作,包括插入,更新和刪除。 `bulkwrite.php` ```php <?php try { $mng = new MongoDB\Driver\Manager("mongodb://localhost:27017"); $bulk = new MongoDB\Driver\BulkWrite; $doc = ['_id' => new MongoDB\BSON\ObjectID, 'name' => 'Toyota', 'price' => 26700]; $bulk->insert($doc); $bulk->update(['name' => 'Audi'], ['$set' => ['price' => 52000]]); $bulk->delete(['name' => 'Hummer']); $mng->executeBulkWrite('testdb.cars', $bulk); } catch (MongoDB\Driver\Exception\Exception $e) { $filename = basename(__FILE__); echo "The $filename script has experienced an error.\n"; echo "It failed with the following exception:\n"; echo "Exception:", $e->getMessage(), "\n"; echo "In file:", $e->getFile(), "\n"; echo "On line:", $e->getLine(), "\n"; } ?> ``` 該腳本會插入一輛新車,更新一輛車,然后刪除一輛車。 ```php $bulk = new MongoDB\Driver\BulkWrite(); ``` `MongoDB\Driver\BulkWrite`收集一個或多個應發送到服務器的寫操作。 ```php $doc = ['_id' => new MongoDB\BSON\ObjectID, 'name' => 'Toyota', 'price' => 26700]; ``` 這是要插入的新文檔。 `MongoDB\BSON\ObjectID`生成一個新的`ObjectId`。 它是用于唯一標識集合中文檔的值。 ```php $bulk->insert($doc); ``` 使用`insert()`方法創建一個插入操作。 ```php $bulk->update(['name' => 'Audi'], ['$set' => ['price' => 52000]]); ``` 使用`update()`方法創建更新操作。 `$set`運算符將字段的值替換為指定的值。 ```php $bulk->delete(['name' => 'Hummer']); ``` 使用`delete()`方法創建刪除操作。 ```php $mng->executeBulkWrite('testdb.cars', $bulk); ``` `executeBulkWrite()`對`testdb.cars`集合執行三個操作。 ```php > db.cars.find() { "_id" : ObjectId("571e05a6c4a3bc7dc758b457"), "name" : "Audi", "price" : 52000 } { "_id" : ObjectId("571e05b5c4a3bc7dc758b458"), "name" : "Mercedes", "price" : 57127 } { "_id" : ObjectId("571e05bec4a3bc7dc758b459"), "name" : "Skoda", "price" : 9000 } { "_id" : ObjectId("571e05c7c4a3bc7dc758b45a"), "name" : "Volvo", "price" : 29000 } { "_id" : ObjectId("571e05d0c4a3bc7dc758b45b"), "name" : "Bentley", "price" : 350000 } { "_id" : ObjectId("571e05e0c4a3bc7dc758b45c"), "name" : "Citroen", "price" : 21000 } { "_id" : ObjectId("571e05fcc4a3bc7dc758b45e"), "name" : "Volkswagen", "price" : 21600 } { "_id" : ObjectId("5720a4e581365b0e9414d0e1"), "name" : "Toyota", "price" : 26700 } ``` 使用`mongo`工具確認更改。 在本教程中,我們使用了 MongoDB 和 PHP。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看