$mongo_ids)); 知道我做错了什么吗? 最佳答案 由于 Gri-6ren">
gpt4 book ai didi

php - 在 PHP 中删除 MongoDB GridFS 中的多个文件

转载 作者:IT老高 更新时间:2023-10-28 12:29:13 24 4
gpt4 key购买 nike

我在 PHP 中使用 MongoDBGridFS,并试图弄清楚如何通过 _id< 删除多个文件

这是我的代码:

 $ids = array("50401f40ff558cec38000061", "62401f40ff558cec38000072", "73401f40ff558cec38000083");
$mongo_ids = array();
foreach($ids as $id) {
$mongo_ids[] = new MongoId($id);
}

$mongo_grid_fs->remove(array("_id" => $mongo_ids));

知道我做错了什么吗?

最佳答案

由于 GridFS 的实际工作方式,这对于单个请求是不可能的。

你有两个收藏:

  • 文件
  • block

要删除 GridFs 文件,您必须同时查询这两个表。因此 remove() 函数实际上调用 block 集合,然后从文件集合中删除文件。

由于 MongoDB 从根本上说不能在一个请求中查询两个集合(基本上是加入删除),因此您必须为每个文件发送一个删除请求以删除,否则您将留下占用 block 集合中空间的 block 。

因此,考虑到这一点,@ToddMoses 的答案是正确的。

您当然可以使用:http://www.php.net/manual/en/mongogridfs.remove.php但我相信它做的事情完全一样,只是抽象了,所以你的查询应该是:

$mongo_grid_fs->remove(array("_id" => array('$in' => $mongo_ids)));

关于php - 在 PHP 中删除 MongoDB GridFS 中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208130/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com