MongoDB 和 Php 之間的一切

要求

  • 在埠上執行的 MongoDB 伺服器通常為 27017.(在命令提示符下鍵入 mongod 以執行 mongodb 伺服器)

  • Php 安裝為安裝了 MongoDB 擴充套件的 cgi 或 fpm(MongoDB 擴充套件沒有與預設的 php 繫結)

  • Composer 庫(mongodb / mongodb)。(在專案根執行 php composer.phar require "mongodb/mongodb=^1.0.0" 中安裝 MongoDB 庫)

如果一切正常,你就可以繼續前進了。

檢查 Php 安裝

如果不確定通過在命令提示符下執行 php -v 來檢查 Php 安裝將返回這樣的內容

PHP 7.0.6 (cli) (built: Apr 28 2016 14:12:14) ( ZTS ) Copyright (c) 1997-2016 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

檢查 MongoDB 安裝

通過執行 mongo --version 檢查 MongoDB 安裝將返回 MongoDB shell version: 3.2.6

檢查 Composer 安裝

通過執行 php composer.phar --version 檢查 Composer 安裝將返回 Composer version 1.2-dev (3d09c17b489cd29a0c0b3b11e731987e7097797d) 2016-08-30 16:12:39`

從 php 連線到 MongoDB

<?php

  //This path should point to Composer's autoloader from where your MongoDB library will be loaded
  require 'vendor/autoload.php';

 // when using custom username password
  try {
        $mongo = new MongoDB\Client('mongodb://username:password@localhost:27017');
        print_r($mongo->listDatabases());
  } catch (Exception $e) {
        echo $e->getMessage();
  }

 // when using default settings
  try {
        $mongo = new MongoDB\Client('mongodb://localhost:27017');
        print_r($mongo->listDatabases());
  } catch (Exception $e) {
        echo $e->getMessage();
  }

上面的程式碼將使用包含為 vendor/autoload.php 的 MongoDB 編寫器庫(mongodb/mongodb)連線到連線到執行在 port27017 上的 MongoDB 伺服器。如果一切正常,它將連線並列出一個陣列,如果連線到 MongoDB 伺服器發生異常,將列印該訊息。

建立(插入)MongoDB

<?php

 //MongoDB uses collection rather than Tables as in case on SQL.
 //Use $mongo instance to select the database and collection
 //NOTE: if database(here demo) and collection(here beers) are not found in MongoDB both will be created automatically by MongoDB.
  $collection = $mongo->demo->beers;

 //Using $collection we can insert one document into MongoDB
 //document is similar to row in SQL.
  $result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

 //Every inserted document will have a unique id.
  echo "Inserted with Object ID '{$result->getInsertedId()}'";
?>

在示例中,我們使用之前在 Connecting to MongoDB from php 部分中使用的$ mongo 例項。MongoDB 使用 JSON 型別的資料格式,因此在 php 中我們將使用陣列將資料插入 MongoDB,這種從陣列到 Json 的轉換(反之亦然)將由 mongo 庫完成。MongoDB 中的每個文件都有一個名為_id 的唯一 ID,在插入過程中我們可以使用 $result->getInsertedId() 獲取;

在 MongoDB 中閱讀(查詢)

<?php
 //use find() method to query for records, where parameter will be array containing key value pair we need to find.
 $result = $collection->find( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );

 // all the data(result) returned as array
 // use for each  to filter the required keys
 foreach ($result as $entry) {
   echo $entry['_id'], ': ', $entry['name'], "\n";
 }

?>

放入 MongoDB

<?php

 $result = $collection->drop( [ 'name' => 'Hinterland'] );

 //return 1 if the drop was sucessfull and 0 for failure
 print_r($result->ok);

?>

有許多方法可以在 tihuan 上執行 15 請參閱 MongoDB 的官方文件