PHP連接MongoDb

原文鏈接:https://www.jb51.net/article/155967.htm

  
<?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();
}
?>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章