sql >> データベース >  >> NoSQL >> MongoDB

MongoDBのクエリからさらに結果があるかどうかを確認するにはどうすればよいですか?

    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かどうかを示すフラグ ドキュメントが利用可能です。




    1. オプション[useMongoClient]はサポートされていません

    2. $andとMultiple$orを使用してMongoDBをクエリします

    3. node.jsを使用したMongoDBのセットアップ:エラー:[localhost:27017]への接続に失敗しました

    4. $pullを使用してmongodbの配列内のドキュメントを削除する方法