0

私は現在、2つのhttpリクエスト間でmongodbカーソルにアクセスするために(find()の後に)mongodbカーソルを保存するための解決策を探しています。私の環境はJAVASpringMVCとmongodb(Spring Data)なので、その強力な機能をすべて備えています。残念ながら、問題を解決するドキュメント/チュートリアルは見つかりませんでした。

クライアントは、最初の20の結果を最初の要求で要求し、次の20の結果を2番目の要求で要求します。もう一度mongoにクエリを実行する代わりに、ドキュメントが時間の経過とともに変更され、それらの最初の順序が必要なため、以前に生成されたカーソルにアクセスしたいと思います。それを行う方法はありますか?

ヘルプは大歓迎です!

4

2 に答える 2

1

一部のドライバは、と呼ばれるカーソルの遅延操作をサポートしていgetMoreます。これにより、カーソルIDが再利用され、より多くのデータが取得されます。

厳密に要求しない限り、カーソルはスナップショットを作成せず、新しいドキュメントが挿入または削除された場合に奇妙な動作を引き起こします(同じドキュメントを2回参照するなど)。.snapshot()結果のスナップショットを作成するには、次のようにクエリにを追加してみてください。

var cursor = db.myCollection.find({country:'uk'}).snapshot();

私はそれをテストしたことがないので、このアプローチがうまくいったかどうかを確認してください。

于 2012-08-29T14:38:10.260 に答える
0

を繰り返し処理して、Cursorすべてをに追加することもできますSortedMap。次に、SortedMap何度でもクエリを実行できます。SortedMap自然な順序で並べ替えることも、を使用してComparator任意の方法で並べ替えることもできます。

于 2012-08-29T14:45:14.137 に答える