2011-10-05 77 views
0

MongoDB中有findAndModify命令來使用自動遞增數字而不是默認ID,但我不知道如何將它用於PHP驅動程序(我不確定它是否支持在所有)。MongoDB中ID的序列號

+0

在分佈式環境中很難生成增量ID。我建議使用唯一生成的id,如objectId而不是增量。 –

+0

問題是我想將它們用於網絡文章,而長ID將成爲我網址的一部分,這並不是很好。這就是我希望使用類似sql的auto_increment的原因primary_key – Googlebot

+0

MB This post - > http://shiflett.org/blog/2010/jul/auto-increment-with-mongodb會幫助你。但我認爲objectId看起來好,即使在URL中) –

回答

2

好吧,如果你需要存儲增量值,我建議你使用其他字段而不是mongodb _id字段mongodb使用這些生成的id返回一些(我相信很多,如果不是全部的話)類型的查詢,特別是如果你有一個多集羣設置,那麼它肯定會使用_id字段來定位數據所在的物理磁盤(我相信使用散列表或某種這樣的技術 - 並不完全與mongo內核的引擎蓋下操作一致)。簡而言之,請將其設計爲一個自動生成的參考字段。

0
<?php 
$m = new MongoClient(); 

// select a database 
$db = $m->seq; 

// select a collection (analogous to a relational database's table) 
$collection = $db->counters; 
$user_collection = $db->user; 



/**********Function to auto increment seq************/ 
function getNextSequence($name){ 
global $collection; 

$retval = $collection->findAndModify(
    array('_id' => $name), 
    array('$inc' => array("seq" => 1)), 
    null, 
    array(
     "new" => true, 
    ) 
); 
return $retval['seq']; 
} 

$db_array=array('_id' => getNextSequence("userid"), 'name' => 'debojit'); 

$user_collection->insert($db_array);