2017-05-31 26 views
0

MongoDBからいくつかの値を取得しています。私は今、findメソッドがcursorを返すので、クエリ結果が遅延ロードされます。カーソルをハッシュとして保存したいのですが、どの方法でも見つけることができます。もちろん、カーソル上を反復して自分自身でhasを埋めることもできますが、私は自動化された方法に興味があります。例えば、Pythonでは、これを行うことができます:myList = list(col.find())すべてのカーソル項目をリストとして取得します。MongoDB Perlでハッシュするカーソル

Perlでも同様のことが可能でしょうか?

+0

キーは何ですか?あなたが与えたPythonの例は、配列のように見えます。すべての文書を一度に取得する方法があります。 – simbabque

+0

@simbabque mongo docs(http://search.cpan.org/dist/MongoDB/lib/MongoDB/Collection.pm)の状態では、取得されるドキュメントはハッシュと同じです。だから私はキーとして検索されたドキュメントのキーを使用したい。あなたはどうしているのですか?それは役に立つかもしれません –

+0

https://metacpan.org/pod/MongoDB::QueryResult#allは検索のすべてのドキュメントをリストとしてまとめて提供します。以前はMongoDBを使ったことはありませんでしたが、 'next'が完全な文書を返すと私は聞きます。それはあなたのハッシュです。 – simbabque

答えて

1

あなたがfindを呼び出すと、それは代表団がMongoDB::QueryResultにメソッドをイテレータれ、cursor objectを返します。その物にnextを実行すると、一度に1つの文書が遅れて返されます。そのドキュメントはすでに完全なデータセットです。これは既にハッシュリファレンス(またはオブジェクト、私は知らない)かもしれません。

use Data::Dumper; 
while (my $object = $cursor->next) { 
    print Dumper $object; 
} 

あなたが一度にそれらのすべてをしたい場合、あなたはその配列に入れ、自分の都合の良い時に使用することができますall方法、とのリストを取得することができます。これは要求に応じてロードされません。

my @objects = $cursor->all; 
関連する問題