2017-11-01 8 views
0

私はmongoDBを使って何千/何百万ものドキュメントをページングしようとしています 私はこのデータ量のためにCursorを使用する必要があることを理解しています。mongoDB次のバッチを取得する(複数のドキュメントを取得する)

各コールで10件のドキュメントを取得したい場合、どうすればよいですか?

私が実行しようとしました:

var cursor = db.collection('person').find({}); 
cursor.batchSize(10); 

が、私が得る次の10件の文書のために今何のコマンドを実行する必要がありますか? cursor.next()を使用している場合は、次の文書が1つしかありません。

私は一度実行すると最初の10のドキュメントを取得します。同じコマンドを再度実行すると、次の10個のドキュメント(ドキュメント11-20)が表示されます。

カーソルがそのように動作しない場合ので、あなただけのページネーションを使用してみてください(コードは含まれなければならない場合は、Javascriptがgreateのだろう)私は何をすべき

おかげ

答えて

0

を説明してください。そのためには、制限付きの検索クエリを使用することができます(カーソルを使用しないで):

//Page 1 
db. person.find().limit(pageSize); 
//Find the id of the last document in this page 
last_id = ... 

//Page 2 
users = db. person.find({'_id'> last_id}).limit(10); 
//Update the last id with the id of the last document in this page 
last_id = ... 

//Page 3 
users = db. person.find({'_id'> last_id}).limit(20); 
last_id = ... 

Pagination, Approach 2をご覧ください。改ページに到達するための他のオプションもあります。

+0

しかし、この解決策は別のページにジャンプしたいときに問題になります(ページ2のImと24ページにジャンプしたい場合)。 なぜ私はそれを使用することはできませんcursor.batchSize(1)ですか? (私は次の10項目を得ることができない場合)? –