0

MongoDB と Flask を使用して、モバイル アプリ用の JSON API を作成しています。

アプリが /topics/ を呼び出すと、トピックのリストが返されますが、結果を効率的にページ分割するにはどうすればよいですか? MongoEngine はオフセットと制限を提供しますが、制限などの前に結果セット全体を取得するため、何千ものドキュメントがある場合はあまり効率的ではありません。

@app.route('/topics/<int:limit>/<int:page>', methods=['GET'])
def get_topics(limit=25, page=1):
    if limit is None or limit <= 1: 
        limit = 2

    if page is None or page <= 1:
        page = 1

    offset = (page - 1) * limit
    topics = Topic.objects().limit(limit).skip(offset)
4

1 に答える 1

2

実際、mongoengine は mongodb でlimitおよびskipパラメータを使用してクエリを実行します。クエリにExplainを使用して、結果の代わりに実行計画を返すようにすることで、これを確認できます。

于 2013-05-25T12:39:18.813 に答える