public override RenderedProjectionDefinition <TNewResult> Render(IBsonSerializer <TResult> documentSerializer, IBsonSerializerRegistry serializerRegistry) { var renderedOutput = AggregateGroupTranslator.Translate <TValue, TResult, TNewResult>(_valueExpression, _outputExpression, documentSerializer, serializerRegistry, _translationOptions); var document = renderedOutput.Document; document.Remove("_id"); return(new RenderedProjectionDefinition <TNewResult>(document, renderedOutput.ProjectionSerializer)); }
internal override RenderedProjectionDefinition <TOutput> TranslateExpressionToGroupProjection <TInput, TKey, TOutput>( Expression <Func <TInput, TKey> > idExpression, Expression <Func <IGrouping <TKey, TInput>, TOutput> > groupExpression, IBsonSerializer <TInput> documentSerializer, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions) { return(AggregateGroupTranslator.Translate <TKey, TInput, TOutput>(idExpression, groupExpression, documentSerializer, serializerRegistry, translationOptions)); }
internal override RenderedProjectionDefinition <TOutput> TranslateExpressionToBucketOutputProjection <TInput, TValue, TOutput>( Expression <Func <TInput, TValue> > valueExpression, Expression <Func <IGrouping <TValue, TInput>, TOutput> > outputExpression, IBsonSerializer <TInput> documentSerializer, IBsonSerializerRegistry serializerRegistry, ExpressionTranslationOptions translationOptions) { var renderedOutput = AggregateGroupTranslator.Translate <TValue, TInput, TOutput>(valueExpression, outputExpression, documentSerializer, serializerRegistry, translationOptions); var document = renderedOutput.Document; document.Remove("_id"); return(new RenderedProjectionDefinition <TOutput>(document, renderedOutput.ProjectionSerializer)); }
private ProjectedResult <TResult> Group <TKey, TResult>(Expression <Func <Root, TKey> > idProjector, Expression <Func <IGrouping <TKey, Root>, TResult> > groupProjector, ExpressionTranslationOptions translationOptions) { var serializer = BsonSerializer.SerializerRegistry.GetSerializer <Root>(); var projectionInfo = AggregateGroupTranslator.Translate <TKey, Root, TResult>(idProjector, groupProjector, serializer, BsonSerializer.SerializerRegistry, translationOptions); var group = new BsonDocument("$group", projectionInfo.Document); var sort = new BsonDocument("$sort", new BsonDocument("_id", 1)); var list = __collection.Aggregate <TResult>(new BsonDocumentStagePipelineDefinition <Root, TResult>(new[] { group, sort }, projectionInfo.ProjectionSerializer)).ToList(); return(new ProjectedResult <TResult> { Projection = projectionInfo.Document, Value = (TResult)list[0] }); }
public override RenderedProjectionDefinition <TNewResult> Render(IBsonSerializer <TResult> documentSerializer, IBsonSerializerRegistry serializerRegistry) { return(AggregateGroupTranslator.Translate <TKey, TResult, TNewResult>(_idExpression, _groupExpression, documentSerializer, serializerRegistry, _translationOptions)); }