MatchフェーズのFilterDefintionとグループフェーズのProjectionDefinitionを使用して、2.2バージョンのドライバを使用して集約クエリを作成しようとしています。しかし、ProjectionDefinitionの作成方法はあまりよく分かりません。 APIは次のようなものです:Mongodbグループ集約C#ドライバでProjectionDefinitionを使用する
FilterDefinition<T> filter=Builders<T>.Filter.Eq("Foo","Bar");
ProjectionDefinition<T> projection=...
IAggregateFluent<T> aggr = fileCol.Aggregate<T>()
.Match(filter)
.Group(projection);
マッチフィルタは通常の検索と同様に動作します。しかし、私はどのように投影を作成するか分からない。
通常のBsonドキュメントを作成してその段階に置くことができ、正常に動作します。しかし、私はビルダーから来た強く型付けされたオブジェクトを使用して一貫したインターフェースを作成しようとしています。そして、これは私がそれを行う方法を理解できない1つの場所です。 APIが存在するので可能だと思います。
(グループフェーズのBSONドキュメントは次のように行うことができる):
projection = new BsonDocument("_id","$SomeIdField").
Add("Result",new BsonDocument("$max","$someNumberField"));
EDIT: のMongoDB API Iは、以下のリンクされているを参照しています、と私は、当該箇所を引用しました。提供される例はありません。私は 'GroupDefinition'がより理にかなっていると思うが、私はそれを書かなかった:-)そして、強く型付けされると、BsonDocumentではなく、何かの戻り値で型付けされることを意味する。
http://api.mongodb.com/csharp/current/html/M_MongoDB_Driver_AggregateFluentBase_1_Group__1.htm
BLOCKQUOTE
public abstract IAggregateFluent<TNewResult> Group<TNewResult>(
ProjectionDefinition<TResult, TNewResult> group
)
パラメータ
基 型:MongoDB.Driver.ProjectionDefinition < TResult、TNewResult>
グループ投影。
タイプパラメータ
TNewResult
ステージの結果のタイプ。
BLOCKQUOTE
'ProjectionDefinition'をチェックアウト?それは正しいとは言えません。マッチのような自分のステージ。 btw 'BsonDocument'は強く型付けされています。そのちょうどキー値のペア 'BsonDocument'があなたのオブジェクトであり、私はアキュムレータ演算子のためにあなたが既に使用できるラッパーを持っていると思います。 – Veeram
@SagarReddy、私はそれが紛らわしいことに同意しますが、それはmdbドキュメントが持っている方法です。私は質問の関連セクションをリンクしています。 –