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 回答