2012-04-04 118 views
1

我將MongoDB中的「Article」保存爲_id整數。 當我想在php中用_id刪除文章時,什麼都不會發生。 我使用的代碼是:無法使用PHP驅動程序刪除MongoDB中的文檔

$result = $db->arcitle->remove(
    array("_id" =>intVal(41)), 
    array('safe' => true) 
); 

我已經使用和不使用「安全」選項,無論是作品嚐試。當我回顯$ result時,它是bool(true)。

任何建議非常感謝!

{ "_id" : 41, 
    "when" : Date(1333318420855), 
    "publisher" : "5", 
    "title" : "10 Steps To The Perfect Portfolio Website", 
    "raw" : "", 
    "preview" : "", 
    "thumbnail" : "", 
    "content" : [ 
    "{}" ], 
    "tags" : null, 
    "votes" : 0, 
    "voters" : [], 
    "comments" : [] } 
+0

'INTVAL( 491)'與您的文檔不匹配_id'字段 – Mattias 2012-04-04 09:41:37

+0

這是一個錯字,我在發佈到SO時忘了清理。我改爲491來測試如果沒有現場匹配會發生什麼。 – 2012-04-04 10:09:01

+0

爲什麼你的'_id'字段不是Bson.ObjectId類型? – 2012-04-04 10:13:48

回答

1

您在集合名稱中出現拼寫錯誤。

$result = $db->arcitle->remove(

大概應該是:

$result = $db->article->remove(array("_id" => 41)); 

的安全選項將無法確認的東西被刪除了,只是沒有錯誤。刪除不會觸發錯誤刪除不存在的東西。

> db.foo.remove({_id: "I don't exist"}) 
> db.getLastError() 
null 

注意,你並不需要重鑄一個整數作爲一個整數 - 如果你需要轉換輸入作爲一個整數 - 使用強制聲明:

$string = "42"; 
$int = (int) $string; // $int === 42 
+0

謝謝,它的工作原理!但我真的明白爲什麼我的方式失敗了! – 2012-04-04 14:43:38