首頁  >  文章  >  後端開發  >  monde 在MongoDB中模擬Auto Increment的php程式碼

monde 在MongoDB中模擬Auto Increment的php程式碼

WBOY
WBOY原創
2016-07-29 08:44:31804瀏覽

程式碼大致如下:

複製程式碼 程式碼如下:


functiongene_auauto_ $option = array())
{
$option += array(
'init' => 1,
'step' => 1,
);
$instance = new Mongo();
$instance = $instance->selectCollection('_seq', 'seq');
$seq = $instance->db->command(array(
'findAndModify' => 'seq',
'query' => array('_id' => $命名空間),
'update' => array('$inc' => array('id' => $ option['step'])),
'new' => true,
));
if (isset($seq['value']['id'])) {
return $seq['value']['id'];
}
$instance->insert(array(
'_id' => $namespace,
'id' => $option ['init'],
)) ;
回傳$option['init'];
}
var_dump(generate_auto_increment_id('foo'));
var_dump(gene7_increment_id('foo'));
var_dump(generate_auo' ', array('init' => 123)));
? >


其具體實作方式主要是利用MongoDB中findAndModify,只要每次往MongoDB裡insert物件前產生ID賦值給_id就OK了,它的實作滿足原子性,所以不存在並發問題。

另外說明一點,findAndModify本身提供了一個upsert參數,為true的話可以自動插入,但那樣就不能自訂初始值了,所以文中範例沒有使用upsert。

順便說一句,資料庫「_seq」的名字以下劃線起始,這樣清單的時候會排在前面,更容易分辨一些。

參考:Auto Increment with MongoDB

以上就介紹了monde在MongoDB中模擬自動遞增的php程式碼,包含monde方面的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn