0

Mongo Grouping は DB レベルでは発生せず、次のコードで Mongo Aggregation Framework を使用しません。理由はありますか?CommandDocument と RunCommand を作成する必要があり、それでのみ集約フレームワークが使用されます。

public IEnumerable<IGrouping<TKey, T>> GetItemsByQuery<TKey>(IMongoQuery query, FieldsBuilder fieldsBuilder, Func<T, TKey> groupbyKey)
{ 
    var mongoCursor = collection.FindAs<T>(query);
    mongoCursor.SetFields(fieldsBuilder);
    return mongoCursor.GroupBy(groupbyKey);
}
4

1 に答える 1

0

1) 集約フレームワークは、MongoDB バージョン 2.1 以降の不安定なリリースでのみサポートされます。サーバー 2.2 で正式にサポートされる予定です。したがって、サーバー 2.1 以降を実行していない限り、サーバー側でこの機能を利用することはできません。

2) ドライバーはまだ集約フレームワークをサポートしていません。集計を手動で作成し、db.RunCommand を使用して実行できます。

3) MongoCursor から IEnumerable 拡張メソッドを呼び出しています。MongoCursor は、何をするように求めているかを把握しているため、グループ化はクライアント側で行われます。コレクションには Group というメソッドがありますが、それを実行するには JavaScript を記述する必要があります。

全体として、アグリゲーションの素晴らしいストーリーはまだありません。サーバー 2.2 では変更される予定ですが、まだ実装されていません。

于 2012-05-29T14:43:19.317 に答える