1. 程式人生 > >MongoDb 基本操作(PHP)

MongoDb 基本操作(PHP)

MongoDb基本操作(PHP)

用mongo的話需要開啟php中的mongo擴充套件(此處比較坑)。

開啟php的mongo擴充套件後就可以使用new Mongo()來建立一個例項。

在tp5中建立一個mongo的例項:

配置檔案中的內容:

"mongo" => "mongodb://使用者名稱:密碼@ip地址:27017/db"

連線資料庫方法

public function mongoConnect(){
        $connect = new \MongoClient(config("mongo"));
        $db = $connect->db;
        return
$db; }

1、查詢操作

查詢條件:

(1) 單條件

(object)array("name" => "stephen");
where "name" = "stephen"

(2) 多條件

(object)array("name" => "stephen","age" => "23");
where "name" = "stephen" and "age" = "23"

這裡的“23”和 23 有區別的,需要注意型別,mongo是不會像mysql會自動轉換型別。

(3) 比較操作符:$lt(小於)$lte(小於等於)$gt

(大於)$gte(大於等於)$ne(不等於)

(object)array("age" => array('$gte' => 18, '$lte' => 40));
where "age" >= 18 and "age" <= 40

(4) in操作符:$in

(object)array("name" => array('$in' => array("stephen", "tim")));
where "name" in ("stephen", "tim")

array(‘stephen’,’tim’)這裡可以是不同型別。

not in操作符:$nin

(object)array("name" => array('$nin' => array("stephen", "tim")));

相當於不等於

where "name" not in ("stephen", "tim") 

(5)或者操作符:$or

(object)array('$or' => array((object)array("name" => "stephen"),(object)array("age" => 23)));
where "name" = "stephen" or "age" = 23

(6)不等於操作符:$not

(object)array("name" => array('$not' => (object)array('$in' => array("stephen", "tim"))));
where "name" <> "stephen" or "name" <> "tim"

查詢資料

查詢得到一條資料

$mongo = $this->mongoConnect();
$result = $mongo->tableName->findOne();

根據條件查詢得到一條資料

$condition = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->findOne($condition);

根據條件查詢得到一組資料

$condition = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->find($condition);

這時候得到的結果是:object(MongoCursor)#72 (0) {}

注意:當使用findOne時可以直接得到一個一維陣列的結果,但是使用find時候,必須將結果進行轉換後才能夠獲取到內容,轉換方式如下

iterator_to_array($result);

如果find中只填入條件的話將會把所有的欄位查詢出來。

還可以填入fields欄位進行對欄位的篩選:

$fields =  array('_id'=>0,'name'=>1,'age'=>1);
$result = $mongo->tableName->find($condition,$fields);

$fields中的1表示顯示,0表示不顯示,或者可以說1表示選擇,0表示不選擇。
上面的結果就是顯示name和age欄位,不顯示_id欄位。

儲存操作

$data = array('name'=>'stephen');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->save($data);

修改操作

$id = array('_id'=>'123');
$data = array('name'=>'stephen');
$updateData = array('$set'=>(object)$data)
$mongo = $this->mongoConnect();
$result = $mongo->tableName->update($id, $data);

將_id為123的name設定成為stephen.

$id = array('_id'=>'123');
$data = array('name'=>'stephen');
$unsetData = array('age'=>'');
$updateData = array('$set'=>(object)$data, '$unset'=>(object)$unsetData)
$mongo = $this->mongoConnect();
$result = $mongo->tableName->update($id, $data);

將_id為123的name設定成為stephen,並刪除age欄位。

刪除操作

$id = array('_id'=>'123');
$mongo = $this->mongoConnect();
$result = $mongo->tableName->remove($id);

刪除_id為123的資料。