MongoFiles,GridFS和Perl

时间:2012-06-21 19:21:46

标签: perl mongodb gridfs

我一直在使用perl,MongoDB和GridFS来进行一些宠物开发,并且想知道 - 无论如何perl与Mongofiles接口(除了使用系统命令导航并以这种方式调用它,嘿) - 就像。 .well ...一个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副本。

2 个答案:

答案 0 :(得分:5)

您想使用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);

答案 1 :(得分:1)

弗雷德里克为我提供了这个答案的知识,但是为了遗产,这里有一个完整的,有效的例子...其他地方的网站上找不到这样的内容:

#!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"});