本文目錄一覽:
- 1、php7 mongodb 擴展 真的很差嗎
- 2、如何使用brew安裝php的mongodb擴展
- 3、php7.3.4連接MongoDB2.2.2用哪個版本的擴展呢?
- 4、php怎樣測試是否安裝成功mongdb擴展
- 5、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