現(xiàn)今的技術(shù)趨勢(shì)選擇非關(guān)系型數(shù)據(jù)庫(kù),也就是NoSQL,更多的開發(fā)團(tuán)隊(duì)選擇使用MongoDB數(shù)據(jù)庫(kù)。MongoDB是當(dāng)前最流行的一種NoSQL數(shù)據(jù)庫(kù),它采用“文檔方式”存儲(chǔ)數(shù)據(jù),用于處理大數(shù)據(jù)量的分布式存儲(chǔ)場(chǎng)景。同時(shí),PHP也是應(yīng)用廣泛的Web后端開發(fā)語言,因此,為了更好地實(shí)現(xiàn)MongoDB的應(yīng)用和后臺(tái)數(shù)據(jù)處理,開發(fā)人員就需要一個(gè)簡(jiǎn)單高效的MongoDB操作的類庫(kù)。
為了使用MongoDB數(shù)據(jù)庫(kù),需要先安裝mongodb驅(qū)動(dòng)擴(kuò)展并確保官方的PHP擴(kuò)展已啟用。接下來就是安裝相關(guān)操作類了。下面,我們選擇開源的第三方類——Mango,這是一個(gè)高度抽象化并具競(jìng)爭(zhēng)力的MongoDB操作類。
require_once 'path/to/mango/Mango.php'; Mango::setConnections(array( 'mongo-node1' =>array( 'host' =>'localhost', 'port' =>27017, 'timeout' =>1000 ) )); $db = Mango::instance('mongo-node1')->db('mydb')->table('mytable');
以上是創(chuàng)建一個(gè)Mango實(shí)例的最簡(jiǎn)代碼。
創(chuàng)建完一個(gè)Mango實(shí)例之后,就可以使用這個(gè)實(shí)例進(jìn)行MongoDB的相關(guān)操作了。在MongoDB中,最常用的操作是CRUD(Create、Read、Update、Delete)。接下來,我們一步步使用Mango類來實(shí)現(xiàn)這些操作。
首先,是向數(shù)據(jù)庫(kù)集合中新增一條數(shù)據(jù)。我們使用insert()方法實(shí)現(xiàn)。下面的代碼展示了向collection中插入一個(gè)文檔。
$db->insert(array( 'name' =>'John', 'age' =>25, 'sex' =>'male' ));
下一個(gè)操作是讀。讀操作主要包括find、findOne、sort、skip、limit等常見API,下面我們一一詳細(xì)介紹。
find()方法
$cursor = $db->find(array('name' =>'John', 'sex' =>'male')); foreach ($cursor as $doc) { var_dump($doc); }
如果需要指定結(jié)果的每一項(xiàng),可以使用projection選項(xiàng),下面是具體的代碼。
$cursor = $db->find( array('age' =>array('$gt' =>20)), //查詢條件 array('name' =>true, 'age' =>true) //指定結(jié)果中包含的Field );
現(xiàn)在,我們進(jìn)入update,這個(gè)操作比較常見。下面的代碼更新collection中所有名字是John的所有文檔,將其名字改為Jack。
$db->update( array('name' =>'John'), array('$set' =>array('name' =>'Jack')) );
為了刪除集合中的一條記錄,可以直接使用remove。下面的代碼刪除了所有名字是Jack的文檔。
$db->remove(array('name' =>'Jack'));
以上就是MongoDB PHP操作類的基礎(chǔ)知識(shí),這樣做的好處是能夠更加方便地在PHP程序中使用MongoDB的API,進(jìn)一步提高了工作效率。