이제는 모음집에 클릭시 삭제할 문서가 있는데, 이는 게시물 문서 내의 주석입니다.문서 내의 특정 배열 항목을 제거하는 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 포스트 = & ID를 CSS-clearfix-설명 = 540617e3af105b8d133c986a (두 변수 '게시물을 얻을 참조로 '와'ID ') 나는 몇 가지 솔루션을 시도
,
- 첫째 하나
$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);
꽤 많이 오른쪽이 작동합니다, 이상하게도, 아무 짓도 안 했어요?
- 제 3 해결책 :
$collection->remove(array('_id' => $_GET['post'], 'comments._id' => $_GET['id']));
은 무엇 이것을 달성하는 적절한 방법이 될 것입니다? 나는이 문제에 대해 많은 노력을 기울였으며 일부 집계 쿼리를 구현하기도했지만 제대로 작동하지 않았습니다.
고맙습니다. 위에서 여러 번 열거 한 솔루션을 시도했지만 새로운 MongoId() 표시기를 쓰는 것을 잊어 버렸습니다. 대신 $ _GET [ 'id']를 원시 형식으로 두었습니다. 배열에서 무엇이든 꺼내십시오. 건배! –