3

Morphia と Play フレームワークの MongodDB モジュールはどちらも、MongoDB 用の Java ドライバーのラッパーです。

しかし、Morphia はクエリ時に直接 Java リストを提供しないことに気付きました。これにより、Query という複雑なオブジェクトが得られます。このオブジェクトでメソッド asList() を呼び出す必要があります。これにより、クエリ内の各要素を反復処理してリストを生成します。ほとんどの場合、Java リストが必要な場合、これはパフォーマンスに影響を与える可能性があると思います。Morphia が mongodb データベースからデータをフェッチするときに List を生成しないのはなぜでしょうか。

4

1 に答える 1

3

その理由は、データをどのように使用するかを決定できるからです。ウィキに見られるように、get() を介して最初のオブジェクトを取得するか、asKeyList() を介して ID のリストを取得することしかできませんでした。彼らは、 as List() を使用すると、大規模なセットではコストがかかる可能性があることを認めています

私が理解している背後にある理由は、Query オブジェクトを再利用することです。これらを使用すると、(フィルターなどを使用して) 複雑な Query オブジェクトを作成し、必要に応じて結果を取得できます。リストされたメソッド (asList など) はクエリ オブジェクトに影響を与えないため、同じクエリから異なる結果セットを取得することもできます。

クエリ オブジェクトを何度も再利用し、大量のデータ セットを返さない場合 (いずれにせよ、あまり喜んで行うべきではありません)、これは便利です。

于 2011-06-28T10:42:14.893 に答える