2016-04-19 10 views
1

MongoDBデータベースからPerlスクリプトに配列を取得し、各要素を読み込もうとしています。これは私が単純だと思っていたものですが、何かばかな理由のために私の払い戻しを蹴っています。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'
'私'、
'あなた'、
'彼'、
'彼女'
]。私が代わりに値の配列への参照を渡されていていることがわかり、最後の行を見ると
メンバー= ARRAY(0x47fa398)

。だから私は$ member [0]や$ member [1]経由でアクセスしようとしましたが、同じARRAY(0x *****)を返します。

お願いします。私はそれが何かばかだと確信しています。

ありがとうございます!

スティーブン

答えて

2

私はMongoのに慣れていないんだけど、出力を見て、あなたの@members配列は、一つの要素がある - (あなたが疑われるとして)配列リファレンスを。 Mongoは配列参照を返すので、スカラーに格納してアクセスするのが最も良い方法です。

my $members = $document->{'members'}; 
print "second item returned is: ", $members->[1]; 
print "The complete contents:\n"; 
for my $item (@$members) { 
    print " ", $item; 
} 
+0

マーティー、ありがとう。スカラーでアクセスしようとは思わなかった。私の考えではそれは配列だったので、私はそれを1つとして扱おうとしていました。 –

関連する問題