相对简单的问题,但不是我找到确切答案的问题 - 假设我们已经对 MongoDB 驱动程序进行了 CPAN,设置了一个包含一些数据的数据库,并希望将查找结果捕获到文本字符串中以在 perl 脚本中操作。
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;
my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->x;
my $parseable;
#Ran this in mongoshell earlier: db.x.insert({"x":82})
$string = $users->find({"x" => 82});
@objects = $string->all;
print "LEN: ".(@objects.length())."\n"; #returns 1....hmmmm...would imply it has my
entry!
print @objects[0]."\n";
print $objects[0]."\n";
print keys(@objects)."\n";
print keys(@objects[0])."\n";
print "@objects[0]"."\n";
这些在命令行上输出以下内容,它们都不是我想要的)-=:
LEN: 1
HASH(0x2d48584)
HASH(0x2d48584)
1
2
HASH(0x2d48584)
我想要的是 BSON 作为字符串 - 我想要 mongoshell 在 Perl 中的字符串中返回的内容!我的梦想输出如下:
{ "_id" : ObjectId("4fcd1f450a121808f4d78bd6"), "x" : 82 }
进一步增加的事实是我可以在一个变量中捕获这个字符串来操作。
下面的代码将很好地显示内容,但不会将其抓取到变量中进行操作,最不幸的是:
#!/usr/bin/perl
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;
my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->x;
my $parseable;
#Ran this in mongoshell earlier: db.x.insert({"x":82})
$string = $users->find({"x" => 82});
use Data::Dumper; # new import
print Dumper $string->all,0; # call Dumper method
带输出:
$VAR1 = {
'_id' => bless( {
'value' => '4fcd1f450a121808f4d78bd6'
}, 'MongoDB::OID' ),
'x' => '82'
};
有人知道怎么做这个吗?
谢谢!