mongodb 是沒有 id 自增的
也就是 插入第一條
id=1
插入第二條 id=2
我們寫一個mongodb類
具體代碼我就不說了 我這裡就簡單的列舉一下
原型 $db->insert($data=array(),$options=array()){}
然後我們插入 資料的時候是這樣的
$db->insert(array("test"=>"測試")); //插入成功並沒有id
我們封裝一個 insert 類
function insert(array $data,$options=[]){ $this->before($data); //這裡的befor 是引用$data return $this->db->insert($data,$options); }
protected function before(&$data) { $pk='id'; if(!isset($data[$pk])) { $data[$pk] = $this->id($pk); } }
來看 before 的原型 (&$data)
檢測到 $data數組不存$data['id']
$data['id']=id()//自增欄位
來看一下id的函數 ()
protected function id($pk) { $result = $this->find(array(),array($pk=>1))->sort(array($pk=>-1))->limit(1); //查詢欄位id $data = $result->getNext(); //擷取下一條資料 return isset($data[$pk])?$data[$pk]+1:1; //不存在id id預設1 存在+1 }
回到剛才的插入 $db->insert(array("test"=>"測試"));
因為再插入之前增加了一個引用函數before
那麼 數組就變成了 array("test"=>"測試","id"=>1) //存在就是id+1