0
現在,我的收藏中有一個文檔,我希望在點擊時刪除,而這些文檔是註釋文檔中的註釋。MongoDB/PHP刪除文檔中的特定數組項目
這裏的結構:
{
"_id" : "design-patterns-vs-frameworks",
"title" : "Design Patterns vs Frameworks",
"category" : [
"Frameworks",
" Design Patterns",
" PHP"
],
"date_time" : ISODate("2014-09-02T13:45:29.124Z"),
"description" : "Frameworks vs Design Patterns",
"content" : " Content!",
"author" : "Maciej Sitko",
"comments" : [
{
"_id" : ObjectId("54061528af105b51133c986c"),
"comment" : "ashfklsfsl\r\n",
"author" : "maciejsitko",
"date" : ISODate("2014-09-02T19:06:16.646Z")
},
{
"_id" : ObjectId("5406152caf105b51133c986d"),
"comment" : "lfasdlfsfl",
"author" : "maciejsitko",
"date" : ISODate("2014-09-02T19:06:20.652Z")
}
]
}
完整的刪除鏈接是:
delete.php後= CSS-clearfix解釋的& ID = 540617e3af105b8d133c986a (正如你看到兩個GET變量「後'和 '身份證')
我嘗試了幾種解決方案,
- 首先一個:
$collection->update(array("_id" => $_GET['post']), array('$unset' =>
array("comments" => array("_id" => $_GET['id']))));
這只是刪除評論數組內的所有評論。
- 第二:
$delete = array('$pull' => array("comments" => array('_id' => $_GET['id'])));
$collection->update(array('_id' => $_GET['post']), $delete);
沒有幾乎做任何事情,奇怪的是,這應該工作,對不對?
- 第三解決方案:
$collection->remove(array('_id' => $_GET['post'], 'comments._id' => $_GET['id']));
什麼將是實現這一目標的正確方法?我在這個問題上掙扎很多,甚至實現了一些聚合查詢,但沒有成功。
謝謝你,我嘗試了你上面列出的幾次解決方案,但忘了放一個新的MongoId()指標,相反,我只是以原始方式放置$ _GET ['id'],所以它沒有從數組中拉出任何東西。乾杯! – 2014-09-03 12:14:12