0
所以,我從MongoDB中檢索一些值。我現在說find
方法返回一個cursor
,它懶加載查詢結果。我希望將光標存儲爲散列,但我可以找到任何方法。當然,你可以遍歷遊標並自己填寫,但我對自動化方式感興趣。例如,在Python中,您可以這樣做:myList = list(col.find())
將所有遊標項目作爲列表。MongoDB遊標在Perl中散列
在Perl中做類似的事情有可能嗎?
所以,我從MongoDB中檢索一些值。我現在說find
方法返回一個cursor
,它懶加載查詢結果。我希望將光標存儲爲散列,但我可以找到任何方法。當然,你可以遍歷遊標並自己填寫,但我對自動化方式感興趣。例如,在Python中,您可以這樣做:myList = list(col.find())
將所有遊標項目作爲列表。MongoDB遊標在Perl中散列
在Perl中做類似的事情有可能嗎?
當您致電find
時,它會返回一個cursor object,它將迭代器方法委託給MongoDB::QueryResult。當你在那件事上做一個next
時,它懶洋洋地返回一個文件。該文件已經是完整的數據集。這可能是一個哈希引用已經(或一個對象,我不知道)。
use Data::Dumper;
while (my $object = $cursor->next) {
print Dumper $object;
}
如果你希望所有的人都在一次,就可以得到與all
方法,然後你就可以放入數組,並在方便使用的清單。這不會按需加載。
my @objects = $cursor->all;
你想要的鑰匙是什麼?你給的Python例子看起來像一個數組。有一種方法可以一次獲得所有文件。 – simbabque
@simbabque作爲mongo文檔(http://search.cpan.org/dist/MongoDB/lib/MongoDB/Collection.pm)狀態,檢索到的文檔與散列相同。所以我想用鍵作爲檢索文檔中的鍵。 Whihc mehtod你在說什麼?它也可以是有用的 –
https://metacpan.org/pod/MongoDB::QueryResult#all一次將所有搜索文檔作爲列表提供。我以前從未使用MongoDB,但聽起來'next'返回完整的文檔。這是你的哈希。 – simbabque