2

我一直在使用 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 的副本。

4

2 回答 2

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);
于 2012-06-21T19:52:07.353 回答
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"});
于 2012-06-21T20:04:54.633 回答