2012-03-22 171 views
3

我想通过1递增ID但在运行PHP的页面,而我有一个问题 错误是如何在PHP中使用findAndModify和MongoDB

Fatal error: Call to undefined method MongoCollection::findAndModify() in C:\wamp\www\....

我的代码是:

<?php 
// connect 
$m = new Mongo(); 
$db=$m->demo;//selecting database named demo 
$db->authenticate("abc","abc");//authenticate database by its username and password 
$next =nextValue($db); 
$db->counters.insert(array("_id"=>$next, "name"=>'B')); 
print_r($db->runcommand(array('getlasterror'=>1,'fsync'=>true))); 
function nextValue($db) 
{ 
     //$next =$db->counters->findAndModify(array('query'=> array("_id"=> "total"),'update'=>array($inc=> array("total"=> 1)))); 
     //I Used above Code Before this code 
     $next =$db->command(array('findAndModify'=>'counters'),array('query'=> array("_id"=> "total"),'update'=>array($inc=> array("total"=> 1)))); 
     if($next['total']==0) 
     { 
     $db->counters->insert(array("_id"=> "total", "name" => 'A')); 
     $next =$db->counters->findAndModify(array('query'=> array("_id"=> "total"),'update'=>array($inc=> array("total"=> 1)))); 
     } 
     return $next['total']; 
} 
?> 

回答

4

还没有findAndModify函数。相反findAndModify的,你必须运行通用数据库命令做到这一点:

$db->command(
    array(
    "findandmodify" => "counters", 
    "query" => array("_id"=> "total"), 
    "update" => array($inc=> array("total"=> 1)), 
) 
); 

有一个在https://jira.mongodb.org/browse/PHP-117一个开放的问题,虽然实现findAndModify。

+4

只为大家看着这个 - 辅助命令被添加到2012年8月:http://php.net/manual/en/mongocollection.findandmodify.php – Tobias 2012-12-13 00:17:59

相关问题