【问题标题】:MongoFiles, GridFS, and PerlMongoFiles、GridFS 和 Perl
【发布时间】:2012-06-24 02:35:56
【问题描述】:

我一直在使用 perl、MongoDB 和 GridFS 进行一些宠物开发,并且想知道 - 无论如何 perl 是否可以与 Mongofiles 交互(除了使用系统命令导航并以这种方式调用它,呵呵) - 就像。 .嗯...一个cpan库?还是 Mongo 当前 CPAN 模块的扩展?

举一个我想做的例子:

我希望能够将文件存储到我的 mongoDB 并将文件检索到我的 mongoDB - 例如,从命令行,一旦我导航到其中包含 mongofiles 的目录,我就可以执行

mongofiles put "C:\Users\Me\cool.txt"

它会将文件存储到数据库中!假设我从驱动器中删除了cool.txt。现在当我执行时:

mongofiles get "C:\Users\Me\cool.txt"

它从数据库中检索文件并将其放入我的目录中!我只想能够从 Perl 访问这个 mongofiles 功能。即使这意味着在我的脚本目录中拥有一份 mongofiles 的副本。

【问题讨论】:

  • 举个例子说明你想对 Mongofile 做些什么。

标签: perl mongodb gridfs


【解决方案1】:

你想使用 GridFS。

下面是 perl API: http://api.mongodb.org/perl/current/MongoDB/GridFS.html

这里是一个插入的例子:

use MongoDB::GridFS;

my $grid = $database->get_gridfs;
my $fh = IO::File->new("myfile", "r");
$grid->insert($fh, {"filename" => "mydbfile"});

并检索:

use MongoDB::GridFS::File;

my $outfile = IO::File->new("outfile", "w");
my $file = $grid->find_one({"filename" => "mydbfile"});;
$file->print($outfile);

【讨论】:

【解决方案2】:

Frederick 为我提供了这个答案的知识,但为了传承,这里有一个完整的、有效的例子……在其他地方的互联网上找不到类似的例子:

#!usr/bin/perl

use MongoDB::GridFS;
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;

my $conn = new MongoDB::Connection;
my $db   = $conn->test; #name of our local db is test...default of mongoDB
my $grid = $db->get_gridfs;
my $fh = IO::File->new("cool.txt", "r");
$grid->insert($fh, {"filename" => "test"});

【讨论】:

  • 你瞧,检查一下 Frederick 提到的 API,文档中很早就提到了“获取”功能。
  • 我在我的答案中添加了一个小的检索示例。
  • 太棒了-我已经成功了...我想我要发布另一个问题了,因为我在使用 docx 时遇到了麻烦。
猜你喜欢
  • 1970-01-01
  • 2015-07-22
  • 2017-12-26
  • 2013-06-01
  • 2014-05-12
  • 1970-01-01
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多