php的mongodb擴展,php+mongodb

本文目錄一覽:

php7 mongodb 擴展 真的很差嗎

MongoDB\Driver\Manager::executeBulkWrite

這玩意還配置了一個巨大的類庫來配合調用:就是這個: ,純粹是脫褲子放P,多此一舉,本來原生擴展就已經巨長、巨難用,還配一個根本沒有簡化任何代碼的庫有什麼意義?甚至於調用這個類庫比原生的名字更長、更啰嗦,而且多了一層封裝就多一次bug機會。

這個庫文件總共63個,看看,如果你隨便寫個腳本訪問一下mongodb,還得包含63個文件,我TM整個項目都沒有63個文件好不好?這些個寫慣了java的沒事就老老實實寫java,都跑來寫php,php是要解析執行的,又不像jvm那麼編譯優化執行,搞那麼多文件,不影響執行速度嗎?真是狗屎,所以完全不推薦用這個狗屎庫。

但是這個擴展最奇怪的就是文檔超級簡陋,根本不能獲得任何有價值的信息,所以只能靠摸索來了。

下面是我用到的由MongoClient遷移到MongoDB\Driver的差異點。

MongoClient插入或更新是同樣的代碼:

(new MongoClient())-{$db}-{$collection}-save($arr);

// 這個$arr數組可以直接含有 “_id” 索引來指定 mongodb文檔的_id值,就這麼簡單粗暴,這才是php啊!

MongoDB\Driver,插入和更新需要區分:

$mongo = new MongoDB\Driver\Manager();

$bulk = new MongoDB\Driver\BulkWrite([‘ordered’ = true]);

$data = $mongo-executeQuery(‘db.collection’, new MongoDB\Driver\Query([]), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED))-toArray();

if (empty($data[0])) { // 確定不存在,插入

$bulk-insert($arr);

} else { // 否者更新

$bulk-update([], array(‘$set’ = $arr)); // $arr同樣是剛才的數組

}

// 還沒完,還要執行下一步:db.collection要替換成實際的資料庫、集合名

$result = $mongo-executeBulkWrite(‘db.collection’, $bulk, new MongoDB\Driver\WriteConcern(MongoDB\Driver\WriteConcern::MAJORITY, 1000));

// 返回插入或更新是否成功:

$ok = $result-getInsertedCount() || $result-getModifiedCount() ? 1 : 0;

// 真是夠了!

查詢一條記錄:

MongoClient:

(new MongoClient())-{$db}-{$collection}-findOne([‘_id’ = $id]);

MongoDB\Driver:

$mongo = new MongoDB\Driver\Manager();

$result = $mongo-executeQuery(‘db.collection’, new MongoDB\Driver\Query([‘_id’=$id], []), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));

// 返回的$result是一個對象,需要手動轉換成數組。

查詢數量時候,需要注意:

$mongo = new MongoDB\Driver\Manager();

$cursor = $mongo-executeCommand($db, new MongoDB\Driver\Command($arr), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_SECONDARY_PREFERRED));

// 這裡$cursor是一個游標。需要注意$arr里的欄位:

$arr = [‘count’=$collection, ‘query’=$query]; // 這裡count必須排在前面,位置反了直接報異常。

查詢結果集:

$mongo = new MongoDB\Driver\Manager();

$cursor = $mongo-executeQuery(‘db.collection’, new MongoDB\Driver\Query($arr, $opts), new MongoDB\Driver\ReadPreference(MongoDB\Driver\ReadPreference::RP_PRIMARY_PREFERRED));

//注意,這裡的 $arr和 $opts;

$arr = [‘_id’= [‘$in’= $ids] ]; // 根據id數組獲取集合

$opts = [‘limit’= $limit, ‘skip’= $skip ]; // 不推薦

// 這裡在傳遞$limit和$skip的時候,最好先轉成整數,不然不生效:

$opts = [‘limit’= (int) $limit, ‘skip’= (int) $skip ]; // 推薦寫法。

// 寫到這裡,讓人懷疑是不是在用php了,怎麼還需要這樣的類型轉換。字元串整數都不行!

基本就這樣,推薦自己封裝一個簡單的MongoDB\Driver,而不是使用那個巨大無比的庫、也不推薦直接用原生

如何使用brew安裝php的mongodb擴展

MongoDB 是一個基於分散式文件存儲的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支持的數據結構非常鬆散,是類似json的bson格式,因此可以存儲比較複雜的數據類型。

Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似於面向對象的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

MongoDB的數據存儲上,感覺有點想關係型資料庫中的key=value的數據格式。

和memcache或者redis差不多,mongodb也是分服務端和客戶端的(相對)。用brew 來安裝的話是非常方便的。

遇到類似的問題,你可以去後盾人平台看看的哦,裡面的東西不錯應該能幫你解決一些不明白的問題(❁´◡`❁)*

php7.3.4連接MongoDB2.2.2用哪個版本的擴展呢?

首先進入pecl(PHP Extension Community Library)網站;

搜索mongodb擴展;

點擊版本,查看支持的php版本

4.下載擴展

php怎樣測試是否安裝成功mongdb擴展

1、在windows環境下,我們的軟體安裝在C盤,當然用戶也可以安裝在其他磁碟,和Java一樣。小編以默認地址為例,首先是如何運行我們的資料庫,打開cmd,輸入cd C:\Program Files\MongoDB\Server\3.2\bin,回車;在輸入C:\Program Files\MongoDB\Server\3.2\bin\mongod即可運行我們的資料庫服務。

2、如果用戶不想每次開機都運行,那麼可以修改環境變數,這樣一開機即可開始服務。

3、然後找到path變數,修改變數值,添加C:\Program Files\MongoDB\Server\3.2\bin,記住這裡有許多變數值需要使用「;」隔開。

php 怎麼進入mongodb

在Linux、window、Mac平台上安裝MongoDB擴展

Linux上安裝 MongoDB PHP擴展

在終端上安裝

可以在linux中執行以下命令來安裝MongoDB 的 PHP 擴展驅動

$ sudo pecl install mongo

使用php的pecl安裝命令必須保證網路連接可用以及root許可權。

安裝手冊

如果想通過源碼來編譯擴展驅動。必須手動編譯源碼包,這樣做的好是最新修正的bug包含在源碼包中。

可以在Github上下載MongoDB PHP驅動包。訪問github網站然後搜索”mongo php driver”(下載地址:),下載該源碼包,然後執行以下命令:

$ tar zxvf mongodb-mongodb-php-driver-commit_id.tar.gz

       $ cd mongodb-mongodb-php-driver-commit_id

       $ phpize

       $ ./configure

       $ sudo make install

如果php是編譯的,則安裝方法如下(假設是編譯在/usr/local/php目錄中):

$ tar zxvf mongodb-mongodb-php-driver-commit_id.tar.gz

       $ cd mongodb-mongodb-php-driver-commit_id

       $ /usr/local/php/bin/phpize

       $ ./configure –with-php-config=/usr/local/php/bin/php-config

       $ sudo make install

執行以上命令後,你需要修改php.ini文件,在php.ini文件中添加mongo配置,配置如下:

extension=mongo.so

注意:你需要指明 extension_dir 配置項的路徑。

window上安裝 MongoDB PHP擴展

Github上已經提供了用於window平台的預編譯php mongodb驅動二進位包(下載地址:),可以下載與php對應的版本,但是需要注意以下幾點問題:

VC6 是運行於 Apache 伺服器

‘Thread safe’(線程安全)是運行在Apache上以模塊的PHP上,如果以CGI的模式運行PHP,請選擇非線程安全模式(’ non-thread safe’)。

VC9是運行於 IIS 伺服器上。

下載完需要的二進位包後,解壓壓縮包,將’php_mongo.dll’文件添加到PHP擴展目錄中(ext)。ext目錄通常在PHP安裝目錄下的ext目錄。

打開php配置文件 php.ini 添加以下配置:

extension=php_mongo.dll

重啟伺服器。

通過瀏覽器訪問phpinfo,如果安裝成功,就會看到類型以下的信息:

MAC中安裝MongoDB PHP擴展驅動

你可以使用’autoconf’安裝MongoDB PHP擴展驅動。

你可以使用’Xcode’安裝MongoDB PHP擴展驅動。

如果使用 XAMPP,可以使用以下命令安裝MongoDB PHP擴展驅動:

sudo /Applications/XAMPP/xamppfiles/bin/pecl install mongo

如果以上命令在XMPP或者MAMP中不起作用,需要在Github上下載兼容的預編譯包。

然後添加 ‘extension=mongo.so’配置到php.ini文件中。

原創文章,作者:UHQP,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/144963.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UHQP的頭像UHQP
上一篇 2024-10-26 11:54
下一篇 2024-10-26 11:54

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • Python連接MongoDB資料庫

    MongoDB是一個流行的開源、非關係型、文檔型資料庫。Python具有簡單、易學的語法、廣泛的應用能力,因此它很適合連接MongoDB資料庫。本文將從以下幾個方面詳細討論Pyth…

    編程 2025-04-25
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台伺服器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • MongoDB使用詳解

    一、什麼是MongoDB? MongoDB是一個基於分散式文件存儲的NoSQL資料庫。 與傳統關係型資料庫不同,MongoDB沒有固定表結構,採用文檔存儲方式。文檔是JSON格式的…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24

發表回復

登錄後才能評論