【问题标题】:Delete specific document in Mongodb with PHP使用 PHP 删除 Mongodb 中的特定文档
【发布时间】:2016-11-10 13:34:55
【问题描述】:

我是 mongodb 的新手。我想从集合中删除特定文档,但在没有任何语法错误的情况下无法删除。

这里是 show_post.php

<?php
    $connect = new Mongoclient();
    $db = $connect -> post;

<table width="50%" border="1">
  <tr>


    <th>#</th>
    <th>Title</th>
    <th>description</th>
    <th colspan="2">Action</th>
    </tr>
    <?php $result = $db->blogs->find();?>
    <?php  foreach ($result as  $row) : ?>
      <tr>
        <td><?php echo $row["_id"]; ?></td>
        <td><?php echo $row["title"]; ?></td>
        <td><?php echo $row["description"]; ?></td>

        <td><a href="delete_post.php?id=<?php echo $row['_id'] ?>">Delete</a></td>
        <td>  <a href="edit_post.php?id=<?php echo $row['_id'] ?>">Update</a></td>

      </tr>
      <?php endforeach?>

</table>

这里是 delete_post.php

$id=$_GET['id']; $var = array("_id"=>$id); $del =$db->blogs->remove($var); 如果(!$del){ echo "未删除"; }别的 { 标头(“位置:show_post.php”); 出口(); } ?>

【问题讨论】:

  • 尝试查询您的 ID 并查看您传递给删除函数的 ID。请记住,如果您尝试删除不存在的对象,mongoDB 不会抛出任何异常。

标签: php mongodb


【解决方案1】:

这可能是因为您将_id 的字符串表示形式传递给find() 方法:

<td><a href="delete_post.php?id=<?php echo $row['_id'] ?>">Delete</a></td>

由于 MongoDB PHP 版本 >=1.0.0,find() 应该返回 MongoDB\BSON\ObjectID 对象。如果你echo这个变量它返回字符串表示形式。

您可以通过以下方式将其转换回对象:

$var = array("_id"=>new MongoDB\BSON\ObjectID($id));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多