PHP7.0.12版本集成了對MongoDB的支持,一種非關(guān)系型數(shù)據(jù)庫。MongoDB與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫SQL有所不同,它將記錄表示為JSON文檔,并采用BSON格式(Binary JSON)存儲文檔。與之前的版本相比,PHP7.0.12版本中整合了更多的MongoDB功能和特性,這些功能和特性將在本文中詳細(xì)介紹。
首先,在PHP7.0.12版本中使用MongoDB需要安裝MongoDB擴(kuò)展。MongoDB擴(kuò)展在PHP7.0.12中默認(rèn)包含。如果需要手動安裝MongoDB擴(kuò)展,則需要使用‘pecl install mongodb’命令安裝。安裝完擴(kuò)展后需要重啟Web服務(wù)器,以使擴(kuò)展生效。
MongoDB通過MongoDB Client連接。在PHP7.0.12版本中,可以使用MongoDB\Client類與MongoDB進(jìn)行交互。例如,連接到MongoDB可以使用以下代碼:
$client = new MongoDB\Client("mongodb://localhost:27017");此代碼塊創(chuàng)建一個MongoDB\Client對象,該對象連接到本地主機(jī)上的MongoDB服務(wù)。您可以用您的MongoDB服務(wù)器的實際IP地址和端口號代替“l(fā)ocalhost:27017”。 連接到MongoDB數(shù)據(jù)庫后,下一步通常是選擇要使用的數(shù)據(jù)庫。Code:
$collection = $client->mydatabase->mycollection;創(chuàng)建$collection對象,以便您可以從中進(jìn)行讀取和寫入操作。此代碼塊使用“mydatabase”數(shù)據(jù)庫的“mycollection”集合創(chuàng)建了一個"$collection"變量。 從MongoDB中檢索數(shù)據(jù)可以使用“find”函數(shù)。在PHP7.0.12版本中,“find”函數(shù)以可讀性更高的方式進(jìn)行了重構(gòu),它現(xiàn)在返回一個MongoDB\Driver\Cursor對象。例如以下的代碼會從MongoDB中查詢一個文檔:
$result = $collection->find(['firstname' =>'John']); foreach ($result as $document){ // 處理每個文檔 }此代碼塊使用“$collection”對象從MongoDB數(shù)據(jù)庫中讀取包含名為“John”的人物數(shù)據(jù)的文檔。使用MongoDB\Driver\Cursor對象的foreach循環(huán)逐一列出每個文檔。 如果需要進(jìn)行更復(fù)雜的查詢,則需要使用MongoDB的聚合功能。例如,要查找最大數(shù)或項,請使用$group操作符并使用$match以查找要聚合的項目。例如:
$data = $collection->aggregate([ [ '$group' =>[ '_id' =>null, 'maxAge' =>['$max' =>'$age'] ] ] ]); $maxAge = $data->toArray()[0]["maxAge"];此代碼塊使用$args數(shù)組作為參數(shù)調(diào)用“aggregate”功能,并使用$group操作符查找mycollection集合中最高階的人物的年齡。通過查詢數(shù)組中的第一個元素并檢查最大年齡,可以確定此操作的結(jié)果。 總之,在PHP7.0.12版本中MongoDB的支持比以前更加完整,API也更加友好。通過新的MongoDB\Client類和更高效的“find”函數(shù),可以更方便地進(jìn)行讀取和寫入操作。另外,聚合支持還可以對數(shù)據(jù)進(jìn)行復(fù)雜聚合查詢。