今天就跟大家聊聊有關怎么在PHP中利用mongoclient操作mongodb數據庫,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
<?php try { // 連接mongodb數據庫 $mongo = new MongoClient(); // 選擇數據庫 $db_name=$mongo->test; // 或者這樣也可以 // $db_name=$mongo->selectDB('test'); // 選擇集合 $collection_name=$db_name->student; // 或者和上面一樣 // $collection_name=$$db_name->selectCollection('collection_name'); echo '<pre>'; // 查看全部dbs $dbs=$mongo->listDBs(); // var_dump($dbs); $collections=$db_name->listCollections(); // var_dump($collections); // 定義被插入的數據,而且php的數組形式與json格式類似,所以很容易理解 $input = array( 'name' =>'yang' , 'sex'=>'man', 'sorce' => array( 'math' =>60 , 'pe'=>30 ) ); // 插入數據,$result會顯示插入數據的結果 // insert的第二個參數內容請看--函數1 // $result=$collection_name->insert($input); // var_dump($result); // 查詢單條數據,跟shell命令里的findOne()一樣 $findOne=$collection_name->findOne(); // var_dump($findOne); // 查找全部數據,記住一點,find()函數的返回值不是跟findOne()函數一樣的數組。而是一個對象,所以不能直接 // 打印出來,至于如何讀取其中的內容,可以使用foreach循環 $find=$collection_name->find(); // 可以跟mongo shell中一樣為find()函數傳遞第一個篩選參數 $situation = array( 'name' => 'yang', ); // 選擇返回的字段內容 $field = array('sorce' => 1 ); // 詳細解釋看--函數2 $find=$collection_name->find($situation,$field); // while ($each=$find->getNext()) { // var_dump($each); // } $sort=$collection_name->find()->sort(array('math' => -1, )); $limit=$collection_name->find()->sort(array('math' => -1, ))->limit(2); $skip=$collection_name->find()->sort(array('math' => -1, ))->skip(2); $count=$collection_name->find()->sort(array('math' => -1, ))->count(); // echo $count; // foreach ($skip as $value) { // var_dump($value); // } // 條件操作符的使用 $situation2=array( // 注意這里字段的設置跟shell中一樣 'item.quantity'=>array('$gt'=>5) ); $gt=$db_name->orders->find($situation2); /**********************************************數據的更新*******************************************/ // 注意,接下來這段代碼會更新整個匹配到的文檔,就跟update沒有使用$set一樣 // 詳情查看函數3 $update=$db_name->orders->update( array('_class'=>'com.mongo.model.Orders'), array('_class'=>'hello world') ); // 注意$set的位置,是不是與shell命令中一致 $update=$db_name->orders->update( array('_class'=>'com.mongo.model.Orders'), array('$set'=>array('_class'=>'hello world')) ); // 從這里可以看到,如果會shell命令的話,那么這一節的重點就是將shell命令與php數組之間的相互轉化了 /**********************************************數據的刪除*******************************************/ // 刪除集合中的數據 $remove=$db_name->orders->remove(array('_class'=>'com.mongo.model.Orders')); // 刪除整個集合 $db_name->orders->drop(); // 本來還有一些集合之間使用DBRef聯查以及GRidFS的內容的,但是那個還是等以后要用了再來補充好了 } catch (MongoConnectionException $e) { echo $e->getMessage(); } ?>
其中幾個函數的解釋
--------------------------函數1--------------------
插入數據函數 insert
$mongo->$db_name->$collection_name->insert($input.$options)
$option中的參數以及默認值
$option=array( 'fsync'=> false, 'j' => false, 'w' => 1, 'wtimeout'=>10000, 'timeout'=>10000 )
'fsync'
這個參數設置為真時,php將會告訴mongodb將當前寫入數據直接寫入硬盤,即使還沒有全部從php文檔寫入mongodb數據庫
'j'
這個參數設置為真市,php將會告訴mongodb在數據插入成功之前就將本次修改寫入日志
'w'
如果設置成0,寫操作將不會被確認,在這里還不會深究
'wtimeout'
跟上面的'w'綁定使用的,后面會介紹的
'timeout'
客戶端等待服務器響應的超時時間,也就是如果php的服務器等待mongodb數據庫寫入數據的時間,如果超過了timeout規定的時間,就算本次寫入失敗
---------------------------函數2--------------------
篩選數據函數 find
$mongo->$db_name->$collection_name->find($situation,$field)
$situation可以為空,表示返回全部數據,也可以是一個數組,表示篩選條件,就跟mongodb命令一樣
$field也可以為空,表示返回全部字段,也可以跟第一個參數一樣,傳入數組,規定返回的字段
注意,即使上面使用$field限制返回字段,_id字段還是會自動返回的
---------------------------函數3--------------------
更新數據 update
$mongo->$db_name->$collection_name->update($criteria,$update,$option)
結合shell命令就很好理解了
$criteria 表示篩選進行更新的文檔
$update 就是要更新后的數據
$option=array( 'upsert'=>false, 'multiple'=>true, 'fsync'=>false, 'w'=>1, 'wtimeout'=>10000, 'timeout'=>10000 )
后幾個的作用在函數1里講過了就不贅述了,upsert為true表示如果當前文檔存在就更新,不存在就創建,multiple為真表示匹配該條件的文檔都會被更新,即不止更新滿足條件的一個文檔。
---------------------------函數3--------------------
刪除數據 remove
$mongo->$db_name->$collection_name->remove($remove,$option)
$remove表示跟find()
第一個參數一樣的篩選條件
$option=array( 'justOne'=>false, 'fsync'=>false, 'w'=>1, 'j'=>false, 'wtimeout'=>10000, 'timeout'=>10000 )
看完上述內容,你們對怎么在PHP中利用mongoclient操作mongodb數據庫有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。