我试图将MongoDB数据库中的数组捕获到我的Perl脚本中并读取每个元素。这是我认为很简单的事情,但是由于某种愚蠢的原因,它正在引起我的反响。
我的MongoDB文档(部分)
"members" : [
"5713b2d46d210e51836de591",
"me",
"you",
"him",
"her"
],
Perl代码
$document = $database -> get_collection('my_collection')->find_one({_id => $oid});
@members = $document->{'members'};
print Dumper @members;
foreach $member (@members)
{
print "member = $member\n";
}
exit;
我得到的输出:
$ VAR1 = [
' 5713b2d46d210e51836de591&#39 ;,
'我&#39 ;,
'你&#39 ;,
'他&#39 ;,
'她的'
];
member = ARRAY(0x47fa398)
查看最后一行,我看到我正在传递对数组的引用而不是值。所以我尝试通过$ member [0]或$ member [1]访问,但只返回相同的ARRAY(0x *****)。
请帮助,我确信这是愚蠢的。
谢谢!
史蒂芬
答案 0 :(得分:2)
我不熟悉Mongo,但是看看输出,你的@members数组有一个元素 - 一个数组引用(如你所料)。由于Mongo返回一个arrayref,你最好把它存储在一个标量中并像这样访问它;
my $members = $document->{'members'};
print "second item returned is: ", $members->[1];
print "The complete contents:\n";
for my $item ( @$members ) {
print " ", $item;
}