Теперь у меня есть документ в моей коллекции, который я бы хотел удалить по клику, и это комментарии внутри документа-документа.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 объясненном & идентификатор = 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);
ли не очень многое сделать что-нибудь, как ни странно, это должно работать, не так ли?
-Third решение:
$collection->remove(array('_id' => $_GET['post'], 'comments._id' => $_GET['id']));
Что бы правильный способ достижения этой цели? Я много боролся с этим, даже выполняя некоторый запрос агрегирования, и это не сработало.
Спасибо, я попробовал решение, указанное выше, несколько раз, но забыл поставить новый указатель MongoId(), вместо этого я просто поместил там $ _GET ['id'] в сыром виде, поэтому он не вытащить что-нибудь из массива. Ура! –