将MongoDB数组读入perl和walk数据

时间:2016-04-19 23:57:58

标签: arrays mongodb perl multidimensional-array

我试图将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 *****)。

请帮助,我确信这是愚蠢的。

谢谢!

史蒂芬

1 个答案:

答案 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;
}