请参阅以下位置 http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
在指定的URL(上面)中,有一个示例代码用于java脚本中的自动增量逻辑,它已转换为php(我已经提供了下面的代码) - 我无法使其无错误。任何人都可以纠正我在转换中出错的地方吗?
<?php
function getNextSequence($name) {
global $db;
$ret = $db->counters->findAndModify(
array(
'query'=>array( '_id'=>name),
'update'=>array( '$inc'=>
array('seq'=> 1) ),
'new'=>'true'
)
);
return $ret->seq;
}
$db = new MongoClient();
$db = $db->test;
$db->counters->insert(
array(
'_id'=>"userid",
'seq'=>0
)
);
$db->users->insert(
array(
'_id'=> getNextSequence("userid"),
'name'=> "Sarah C."
)
);
$db->users->insert(
array(
'_id'=> getNextSequence("userid"),
'name'=> "Bob D."
)
);
$ret = $db->users->find();
print_r($ret);
?>
PHP注意:使用未定义的常量名称 - 在第6行的C:\ php \ seq.php中假定为'name' PHP致命错误:未捕获的异常'MongoResultException',消息'需要删除或更新'在C:\ php \ seq.php中:10 堆栈跟踪: #0 C:\ php \ seq.php(10):MongoCollection-&gt; findAndModify(Array) #1 C:\ php \ seq.php(25):getNextSequence('userid') #2 {main} 在第10行的C:\ php \ seq.php中抛出
答案 0 :(得分:2)
您错过$
变量的$name
。
此外,您传递给findAndModify助手的参数是inccrect,有关详细信息,请参阅http://us1.php.net/mongocollection.findandmodify。
脚本的正确getNextSequence()应为:
<?php
function getNextSequence($name) {
global $db;
$ret = $db->counters->findAndModify(
array( '_id' => $name),
array('$inc' => array('seq' => 1)),
array(),
array('new' => true)
);
return $ret["seq"];
}