MongoDBには、テーラブルカーソル があります。 、これにより、すべてのデータが返された後にカーソルを再利用できます。次のようになります:
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n)
more = docs.hasNext()
取得されるドキュメントは10個だけですが、カーソルを調べて、使用可能なオブジェクトが他にあるかどうかを判断できることに注意してください。唯一の問題は、調整可能なカーソルは上限のあるコレクションでのみ使用できることです。
上記は通常のカーソルでも使用できますが、n + 1
をクエリする必要があります ドキュメント。これは基本的に、現在使用しているものと同じソリューションです。 size()
を使用する必要があります ただし、スキップと制限の修飾子が考慮されているためです。
n = 10
docs = db.documents.find({"foo": "bar"}).limit(n + 1)
more = db.size() > n
私はPyMongoに精通していないので、これは確かにはわかりませんが、このソリューションがn + 1
を送信する可能性があります。 必要なn
ではなく、アプリケーションへの完全なドキュメント 、結果として帯域幅のオーバーヘッドがわずかになります。その場合は、同じことを実行するが、n
を含むオブジェクトのみを返すサーバー側関数を作成することをお勧めします。 配列内のドキュメント、およびn + 1
かどうかを示すフラグ ドキュメントが利用可能です。