1

こんにちは、perl を使用して mongodb にクエリを実行しています。カーソルが戻ってきたら、ドキュメントを json 形式で印刷するにはどうすればよいですか

{ "_id" : ObjectId("51fdbfefb12a69cd35000502"), "biography" : "Colombian pop singer, born on February 2, 1977 to a Colombian mother of Spanish-Italian descent and an American father of Lebanese-Italian descent. Shakira is known for a high IQ and is fluent in Spanish, English, Italian and Portuguese.\r\rWriting songs and belly-dancing since childhood, her first album was released when she was a mere 14 years old. Other Spanish-language albums followed, each faring better than its predecessor, but it was not until 2001 that she achieved a world-wide breakthrough with the English-language \"Laundry Service\" album.\r", "imguri" : "http://api.discogs.com/image/A-5530-1218936486.jpeg", "index" : "shakira", "name" : "Shakira", "ready" : "yes", "requests" : "0"}

mongoDBモジュールに関数が表示されないので、このようなことを試してみてください

run_command({printjson => $foo});

しかし、printjsonは関数ではないと言っています

私に何ができる

ありがとう

4

1 に答える 1

3

perl ドライバーは、以下を見つけるとカーソルを返します。

my $cursor = $collection->find({ i => { '$gt' => 42 } });

これを繰り返す$cursorことで、ドキュメントを取得できます。

while (my $object = $cursor->next) {
    ...
}

while ループでは、 each の各フィールドにアクセスできます$object

print $object->{i};

必要に応じて、それらを JSON に変換することもできますが、そのためにはJSON CPAN モジュールをインストールする必要があります。Debian/Ubuntu では、そのために使用できますが、スクリプトの先頭にapt-get install libperl-json追加します。use JSON;これをインストールすると、次のwhile句を挿入できます。

while (my $object = $cursor->next) {
    my $json = encode_json $object;
    print "$json\n";
}
于 2013-08-07T14:39:15.197 に答える