mongodb php auto increment 自增

來源:互聯網
上載者:User

標籤:

 

mongodb的自增實現根oracle,postgresql是差不多,都是通過計數器來實現的.

oracle自增實現: 執行個體說明oracle序列用法

postgresql自增實現: postgresql auto_increment 實現 通用方法

 

1,mongodb命令列下實現auto_increment

查看複製列印?
  1. > db.counters.insert(             //計數器表  
  2.        {  
  3.             _id: "userid",  
  4.             seq: 0  
  5.        }  
  6.     );  
  7. WriteResult({ "nInserted" : 1 })  
  8.   
  9. > db.counters.find();  
  10. { "_id" : "userid", "seq" : 0 }  
  11.   
  12. > function getNextSequence(name) {      //取下個ID的函數  
  13.    var ret = db.counters.findAndModify(  
  14.        {  
  15.            query: { _id: name },  
  16.            update: { $inc: { seq: 1 } },  //這裡seq就是上面counters表中的seq欄位  
  17.            new: true,  
  18.            upsert: true  
  19.         }  
  20.    );  
  21.   
  22.    return ret.seq;  
  23.  };  
  24.   
  25. > db.users.insert(       //插入資料  
  26.       {  
  27.            _id: getNextSequence("userid"),  
  28.            name: "tank"  
  29.       }  
  30.  );  
  31. WriteResult({ "nInserted" : 1 })  
  32.   
  33. > db.users.find();     //查看  
  34. { "_id" : 1, "name" : "tank" }  
  35.   
  36. > db.users.insert(  
  37.       {  
  38.            _id: getNextSequence("userid"),  
  39.            name: "test"  
  40.       }  
  41.  );  
  42. WriteResult({ "nInserted" : 1 })  
  43.   
  44. > db.users.find();  
  45. { "_id" : 1, "name" : "tank" }  
  46. { "_id" : 2, "name" : "test" }  

2,php實現auto_increment

查看複製列印?
  1. function getNextId($mongo,$name,$param=array()){  
  2.   
  3.      $param += array(   //預設ID從1開始,間隔是1  
  4.        ‘init‘ => 1,  
  5.        ‘step‘ => 1,  
  6.      );  
  7.   
  8.      $update = array(‘$inc‘=>array(‘id‘=>$param[‘step‘]));   //設定間隔  
  9.      $query = array(‘name‘=>$name);  
  10.      $command = array(  
  11.         ‘findandmodify‘ => ‘ids‘,  
  12.         ‘update‘ => $update,  
  13.         ‘query‘ => $query,  
  14.         ‘new‘ => true  
  15.      );  
  16.   
  17.      $id = $mongo->db->command($command);  
  18.      if (isset($id[‘value‘][‘id‘])) {  
  19.         return $id[‘value‘][‘id‘];  
  20.      }else{  
  21.         $mongo->insert(array(  
  22.            ‘name‘ => $name,  
  23.            ‘id‘ => $param[‘init‘],     //設定ID起始數值  
  24.         ));  
  25.         return $param[‘init‘];  
  26.     }  
  27. }   
  28.   
  29. $mongo = new Mongo();  
  30. $curDB = $mongo->selectCollection(‘test‘, ‘ids‘);     //test庫中的ids表  
  31. $user = $mongo->selectCollection(‘test‘, ‘users‘);      //test庫中的users表  
  32.   
  33. $id = getNextId($curDB,‘userid‘,array(‘init‘=>10000,‘step‘=>2));   //取得下一條資料的ID  
  34.   
  35. $obj = array("_id"=>$id,"name"=>"tankzhang");  
  36. $user->insert($obj);   //插入資料  

mongodb php auto increment 自增

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.