2012-02-23 61 views
0

您能否告訴我爲什麼我無法使用mongodb $ in從列表中的id刪除集合記錄,但是如果我使用mongodb驅動程序,我可以刪除它們直。這裏的id是自動在mongodb中生成的_id。 這一個工程:如何用mongodb shanty庫中的某個id刪除文件

array_walk($ids, function(&$item, $key) { $item = new MongoId(trim($item)); }); 

$conditions = array('_id' => array('$in' => $ids), 
       );  

$mongo = new Mongo(); 
$db = $mongo->test; 
$collection = $db->mycollection; 
$result = $collection->remove($conditions, array('safe' => true)); 

但是,使用類Shanty_Mongo_Document的方法移除某些原因使用相同的數據不起作用:

class MyDocument extends Shanty_Mongo_Document 
{ 

    public static function bulkDelete($ids) 
    { 

     array_walk($ids, function(&$item, $key) { $item = new MongoId(trim($item)); }); 

     $conditions = array('_id' => array('$in' => $ids) 
          );   
     $result = self::remove($conditions, array('safe' => true)); 
     return $result['n'];   
    } 
} 

謝謝。

回答

0

爲了解決這個問題,我在Collection.php的源代碼方法刪除評論:

/*  if (array_key_exists('_id', $criteria) && !($criteria["_id"] instanceof MongoId)) { 
       $criteria["_id"] = new MongoId($criteria["_id"]);*/ 

它與條件$在下班後。也許未來版本的庫會修復它。

相關問題