我想使用2.2版本的驅動程序創建一個聚合查詢使用FilterDefintion爲匹配階段和ProjectionDefinition爲組階段。但我不太清楚如何創建ProjectionDefinition。 API如下:使用ProjectionDefinition與C#驅動程序的Mongodb組聚合
FilterDefinition<T> filter=Builders<T>.Filter.Eq("Foo","Bar");
ProjectionDefinition<T> projection=...
IAggregateFluent<T> aggr = fileCol.Aggregate<T>()
.Match(filter)
.Group(projection);
匹配過濾器的工作原理與普通的Find類似。但我不知道如何創建投影。
我可以創建一個普通的Bson文檔,並將其放在該階段,它的工作原理。但我試圖使用來自構建器的強類型對象來創建一致的接口,這是我無法弄清楚如何做到這一點的一個地方。我認爲這是可能的,因爲API存在。
(對於小組賽階段的BSON文檔可以等):
projection = new BsonDocument("_id","$SomeIdField").
Add("Result",new BsonDocument("$max","$someNumberField"));
編輯: MongoDB的API我指的是下面的聯繫,我引用的相關章節。沒有提供任何示例。我同意'GroupDefinition'會更有意義,但我沒有寫:-)通過強類型,我的意思是鍵入任何值的返回值,而不是BsonDocument。
http://api.mongodb.com/csharp/current/html/M_MongoDB_Driver_AggregateFluentBase_1_Group__1.htm
塊引用
public abstract IAggregateFluent<TNewResult> Group<TNewResult>(
ProjectionDefinition<TResult, TNewResult> group
)
參數
組 類型:MongoDB.Driver.ProjectionDefinition < TResult,TNewResult>
組投影。
類型參數
TNewResult
的類型階段的結果。
塊引用
'ProjectionDefinition'在分組階段?這聽起來不對。它自己就像比賽一樣是一個舞臺。 btw'BsonDocument'是強類型的。如果它只是一個關鍵值對'BsonDocument'是你的對象,我認爲對於累加器操作符,你已經有了可以使用的包裝器。 – Veeram
@SagarReddy,我同意這很讓人困惑,但這是mdb文檔如何擁有它。我已經把問題中的相關部分聯繫起來了。 –