【问题标题】:MongoDB Update GridFS RecordMongoDB 更新 GridFS 记录
【发布时间】:2014-11-16 06:51:30
【问题描述】:

我已经使用PHP + MongoDB 实现了CRUD 操作。以下代码用于使用GridFS 上传任何文件。

$conn = new MongoClient();
            $db = $conn->selectDB('mydb');
            $gridfs = $db->getGridFS('uploads');

            foreach ($_FILES as $file) {

                if(in_array($file['type'], $acceptedTypes)){    

                $id = $gridfs->storeFile($file['tmp_name'], array('filename' => $file['name'], 'type' => $file['type'], "id"=> 13, "parentId" => "10", "title" => $file['name'], "isFolder" => 0));


                }else{

                    echo 'file is not of correct type';
                }
            }
    $conn->close();`

我可以使用上面的代码上传任何文档,但是当我尝试更新任何文件的title 时,它就不起作用了。更新文件名的代码如下。

$files = $db->fs->uploads;
$primId = $_GET['id_value'];
$renameTitle = $_GET['name'];
$updateData = array("title" => $renameTitle, "updatedDate" => date('Y-m-d'));

$files->update(array("id" => $primId), array( '$set' => $updateData ));
$conn->close();

这将更新通过ID 的任何文件的title。如果我需要更新任何记录,但它不适用于任何 GridFS 文件上传,则该代码有效。

更准确地说,如果我通过ID 如下所示,

$file = $gridfs->findOne(array('id' => 13)); **//WORKS**

$file = $gridfs->findOne(array('id' => $_GET['id'])); **//DO NOT WORKS**

还有其他方法可以用来更新GridFS记录吗?

谢谢。

【问题讨论】:

    标签: php mongodb file-upload gridfs


    【解决方案1】:

    终于明白了。

    MongoDB 需要integer 变量来创建正确的查询。

    如果您直接使用$_GET$_POST 值,则应先将其转换为整数值。在我的项目中,它是这样工作的:

    $id = (int)$_GET["id"]; 
    $file = $gridfs->findOne(array('id' => $id)); **//WORKS LIKE CHARM**
    

    希望它对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2015-08-22
      • 2021-11-13
      相关资源
      最近更新 更多