Mongodb中ID的序列号

时间:2011-10-05 05:54:21

标签: php mongodb database nosql

Mongo DB中有findAndModify命令使用自动增量编号而不是默认ID,但我不知道如何将它用于PHP驱动程序(我不确定它是否完全支持)。

2 个答案:

答案 0 :(得分:2)

好的,如果你需要存储增量值我建议你使用其他字段而不是mongodb _id字段mongodb使用这些生成的id来返回一些(我相信很多,如果不是全部)类型的查询,特别是如果你有一个多集群设置然后它肯定使用_id字段来定位数据所在的物理磁盘(我相信使用哈希表或一些这样的技术 - 不完全是最新的mongo内核的引擎操作)。简而言之,请将其设置为自动生成的参考字段。

答案 1 :(得分: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);