private IAggregate GetSingleBucketAggregate(ref JsonReader reader, IJsonFormatterResolver formatterResolver) { var docCount = reader.ReadInt64(); var token = reader.GetCurrentJsonToken(); Dictionary <string, IAggregate> subAggregates = null; if (token == JsonToken.ValueSeparator) { reader.ReadNext(); // , long bgCount = 0; var propertyName = reader.ReadPropertyNameSegmentRaw(); if (propertyName.EqualsBytes(BgCountField)) { bgCount = reader.ReadInt64(); reader.ReadIsValueSeparatorWithVerify(); propertyName = reader.ReadPropertyNameSegmentRaw(); } if (propertyName.EqualsBytes(FieldsField)) { return(GetMatrixStatsAggregate(ref reader, formatterResolver, docCount)); } if (propertyName.EqualsBytes(BucketsField)) { var b = GetMultiBucketAggregate(ref reader, formatterResolver, ref propertyName) as BucketAggregate; return(new BucketAggregate { BgCount = bgCount, DocCount = docCount, Items = b?.Items ?? EmptyReadOnly <IBucket> .Collection }); } subAggregates = GetSubAggregates(ref reader, propertyName.Utf8String(), formatterResolver); } else { reader.ReadIsEndObjectWithVerify(); } var bucket = new SingleBucketAggregate(subAggregates) { DocCount = docCount }; return(bucket); }
private IAggregate GetSingleBucketAggregate(JsonReader reader, JsonSerializer serializer) { reader.Read(); var docCount = (reader.Value as long?).GetValueOrDefault(0); reader.Read(); long bgCount = 0; if ((string)reader.Value == Parser.BgCount) { reader.Read(); bgCount = (reader.Value as long?).GetValueOrDefault(0); reader.Read(); } if ((string)reader.Value == Parser.Fields) { return(GetMatrixStatsAggregate(reader, serializer, docCount)); } if (reader.TokenType == JsonToken.PropertyName && (string)reader.Value == Parser.Buckets) { var b = this.GetMultiBucketAggregate(reader, serializer) as BucketAggregate; return(new BucketAggregate { BgCount = bgCount, DocCount = docCount, Items = b?.Items ?? EmptyReadOnly <IBucket> .Collection }); } var nestedAggregations = this.GetSubAggregates(reader, serializer); var bucket = new SingleBucketAggregate(nestedAggregations) { DocCount = docCount }; return(bucket); }
private IAggregate GetSingleBucketAggregate(JsonReader reader, JsonSerializer serializer) { reader.Read(); var docCount = (reader.Value as long?).GetValueOrDefault(0); var bucket = new SingleBucketAggregate { DocCount = docCount }; reader.Read(); if (reader.TokenType == JsonToken.PropertyName && (string)reader.Value == "buckets") { var b = this.GetMultiBucketAggregate(reader, serializer) as BucketAggregate; return(new BucketAggregate { DocCount = docCount, Items = b.Items }); } bucket.Aggregations = this.GetSubAggregates(reader, serializer); return(bucket); }