最近在折騰MongoDB,在用PHP連接過程中發現諸多問題,最后選擇用了PHPLIB,也寫下來心酸歷程,以便查閱。首先在MongoDB的文檔中查閱到,PHP有3個驅動(吐槽下,為啥要弄三個!選擇恐懼癥有沒有)。也貼出官網的圖片,有需要的可以點擊查閱
- mongo(已經被廢棄,不支持PHP7,使用mongodb)
- mongodb
- phplib
mongodb
安裝很簡單,可以使用pecl安裝后即可使用
# pecl install mongodb
使用過之后總體感覺這個驅動過于復雜,并且沒有找到aggregation操作(有可能也是自己不會用,如果有請指教)。所以改用了PHPLIB
PHPLIB
安裝
由于PHPLIB是基于MongoDB驅動的,所以首先需要安裝MongoDB驅動
# pecl install mongodb
修改過PHP.INI后,使用Composer安裝PHPLIB
composer require mongodb/mongodb
到這里PHPLIB已經安裝成功!
CURD(來源)
include ('vendor/autoload.php');
$client = new MongoDB\Client("mongodb://localhost:27017");
$collection = $client->demo->beers;
// insert
$result = $collection->insertOne( [ 'name' => 'Hinterland', 'brewery' => 'BrewDog' ] );
echo "Inserted with Object ID '{$result->getInsertedId()}'";
# Inserted with Object ID '598024bbe13823699e7a9652'
// query
$result = $collection->find(['name' => 'Hinterland', 'brewery' => 'BrewDog']);
foreach($result as $entry){
echo $entry['_id'], ': ', $entry['name'], "\n";
}
# 598024bbe13823699e7a9652: Hinterland
//update
$result = $collection->updateOne(['name' => 'Hinterland'],
['$set' => ['job' => 'developer']]);
MongoDB Enterprise > db.beers.find().pretty();
{
"_id" : ObjectId("598024bbe13823699e7a9652"),
"name" : "Hinterland",
"brewery" : "BrewDog",
"job" : "developer"
}
// delete
$result = $collection->deleteOne(['name' => 'Hinterland']);
echo $result->getDeletedCount();
PHPLIB試用感覺比MongoDB方便一些,借助IDE提示基本上可以不看文檔即可開發。再次吐槽官網MongoDB API!!