请参考以下位置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->findAndModify(Array) #1 C:''php''seq.php(25): getNextSequence('userid') #2 {主要} 在第 10 行的 C:''php''seq.php 中抛出
您缺少$name
变量的$
。此外,您传递给 findAndModify 帮助程序的参数是错误的,有关详细信息,请参阅 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"];
}