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

MongoDBおよびASP.NETMVCを使用した効率的なページング方法

    SetLimitを使用できます クエリを表すカーソル上。これにより、MongoDBからの結果が制限されます 、メモリ内だけでなく:

    var cursor = collection.FindAll(); // Or any other query.
    cursor.SetLimit(50); // Will only return 50.
    foreach (var item in cursor)
    {
        // Process item.
    }
    

    SetSkipを使用することもできます スキップを設定するには(驚くべきことに):

    cursor.SetSkip(10);
    

    注: これらのプロパティは、カーソルでに設定する必要があります それを列挙します。後で設定しても効果はありません。

    ちなみに、Linqのみを使用している場合でも のSkip およびTake 何千ものドキュメントを取得することはありません。 MongoDB 自動的にバッチ処理 サイズ別の結果(最初のバッチは約1mb 、残りは4mb それぞれ)したがって、最初のバッチのみを取得し、最初の50個のドキュメントを取り出します。

    の詳細

    編集: LINQについては混乱があると思います ここ:

    Skip およびTake 両方のIEnumerableの拡張メソッドです および IQueryableIEnumerable インメモリコレクションを対象としていますが、しかし IQueryable 操作は、特定のプロバイダーによって翻訳されます> (この場合はC#ドライバー)。したがって、上記のコードは次のコードと同等です。

    foreach (var item in collection.AsQueryable().SetLimit(50))
    {
        // Process item.
    }
    



    1. Redis:データベースに保存されているすべての値を返します

    2. mongodbドキュメントの配列から文字列を削除するにはどうすればよいですか?

    3. NodeJS-MongoDB:開始接続を使用する

    4. AzureMongoDBを使用するMeteor