2

MongoDB からロードしたいいくつかのオブジェクトの ObjectID のリストがあります。現在、私はそれぞれをループし、Java ドライバーを使用して get を実行していますが、これは非常に非効率的です。

MorphiaDatastore.get(java.lang.Class<T> tClass, java.lang.Iterable<V> vs)メソッドを試し、ID のリストを渡しました。$in: {...}残念ながら、構文を使用しているため、順序は保持されません。

単一のクエリを実行してオブジェクトを任意の順序で取得する方法はありますか?

更新: 明確にするために、ID の順序付きリストがあり、対応するオブジェクトを同じ順序でロードしたいと考えています。

4

3 に答える 3

1

私が知る限り、そのようなオプションはありません。また、そのようなオプションは必要ありません。

私が最近 Mongo を使用して行ったfindByIds(Iterable<ObjectId> ids)ことは、結果をMap<ObjectId,Model>(またはMap<String,Model>)

見つからなかった ID を処理するには、さまざまな方法が考えられます。

  • キーをマップに配置しないでください(私が選択します)
  • キーを null 値にします
  • 例外を発生させる

そして、Iterable を反復処理して、反復順序が確実に保持されるようにしました ( を使用LinkedHashMap)

同様のことができます。MongoDB の結果を繰り返し順に並べ替えるために必要なものはすべて揃っています。すべてがすでにメモリに入っているので、それほど費用はかかりません...

于 2013-07-19T23:03:41.487 に答える