public void Bucket_typed_with_output_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection <Exhibit>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject .Bucket( e => e.Year, boundaries, g => new { _id = default(BsonValue), Years = g.Select(e => e.Year), Count = g.Count() }, options) .ToList(); result.Select(b => b._id).Should().Equal(1900, 1920, "Unknown"); result[0].Years.Should().Equal(new[] { 1902 }); result[1].Years.Should().Equal(new[] { 1926, 1925 }); result[2].Years.Should().Equal(new int[0]); result.Select(b => b.Count).Should().Equal(1, 2, 1); }
public void Bucket_should_add_expected_stage() { var collection = __database.GetCollection<BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition<BsonDocument, BsonValue>)"$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions<BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, options); var stage = result.Stages.Single(); var renderedStage = stage.Render(BsonDocumentSerializer.Instance, BsonSerializer.SerializerRegistry); renderedStage.Document.Should().Be("{ $bucket : { groupBy : \"$year\", boundaries : [ 1900, 1920, 1950 ], default : \"Unknown\" } }"); }
public void Bucket_should_add_expected_stage() { var collection = __database.GetCollection <BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition <BsonDocument, BsonValue>) "$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, options); var stage = result.Stages.Single(); var renderedStage = stage.Render(BsonDocumentSerializer.Instance, BsonSerializer.SerializerRegistry); renderedStage.Document.Should().Be("{ $bucket : { groupBy : \"$year\", boundaries : [ 1900, 1920, 1950 ], default : \"Unknown\" } }"); }
public void Bucket_typed_should_add_expected_stage() { var collection = __database.GetCollection <Exhibit>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(x => x.Year, boundaries, options); var stage = result.Stages.Single(); var serializerRegistry = BsonSerializer.SerializerRegistry; var exhibitSerializer = serializerRegistry.GetSerializer <Exhibit>(); var renderedStage = stage.Render(exhibitSerializer, serializerRegistry); renderedStage.Document.Should().Be("{ $bucket : { groupBy : \"$year\", boundaries : [ 1900, 1920, 1950 ], default : \"Unknown\" } }"); }
public void Bucket_typed_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection <Exhibit>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(x => x.Year, boundaries, options).ToList(); var comparer = AggregateBucketResultEqualityComparer <BsonValue> .Instance; result.WithComparer(comparer).Should().Equal( new AggregateBucketResult <BsonValue>(1900, 1), new AggregateBucketResult <BsonValue>(1920, 2), new AggregateBucketResult <BsonValue>("Unknown", 1)); }
public void Bucket_with_output_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection <BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition <BsonDocument, BsonValue>) "$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var output = (ProjectionDefinition <BsonDocument, BsonDocument>) "{ years : { $push : \"$year\" }, count : { $sum : 1 } }"; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, output, options).ToList(); result.Should().Equal( BsonDocument.Parse("{ _id : 1900, years : [ 1902 ], count : 1 }"), BsonDocument.Parse("{ _id : 1920, years : [ 1926, 1925 ], count : 2 }"), BsonDocument.Parse("{ _id : \"Unknown\", years : [ ], count : 1 }")); }
public void Bucket_should_return_expected_result() { RequireServer.Check(); EnsureTestData(); var collection = __database.GetCollection <BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition <BsonDocument, BsonValue>) "$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions <BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, options).ToList(); var comparer = AggregateBucketResultEqualityComparer <BsonValue> .Instance; result.WithComparer(comparer).Should().Equal( new AggregateBucketResult <BsonValue>(1900, 1), new AggregateBucketResult <BsonValue>(1920, 2), new AggregateBucketResult <BsonValue>("Unknown", 1)); }
public void Bucket_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection<BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition<BsonDocument, BsonValue>)"$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions<BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, options).ToList(); var comparer = AggregateBucketResultEqualityComparer<BsonValue>.Instance; result.WithComparer(comparer).Should().Equal( new AggregateBucketResult<BsonValue>(1900, 1), new AggregateBucketResult<BsonValue>(1920, 2), new AggregateBucketResult<BsonValue>("Unknown", 1)); }
public void Bucket_typed_with_output_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection<Exhibit>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions<BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject .Bucket( e => e.Year, boundaries, g => new { _id = default(BsonValue), Years = g.Select(e => e.Year), Count = g.Count() }, options) .ToList(); result.Select(b => b._id).Should().Equal(1900, 1920, "Unknown"); result[0].Years.Should().Equal(new[] { 1902 }); result[1].Years.Should().Equal(new[] { 1926, 1925 }); result[2].Years.Should().Equal(new int[0]); result.Select(b => b.Count).Should().Equal(1, 2, 1); }
public void Bucket_typed_with_output_should_add_expected_stage() { var collection = __database.GetCollection<Exhibit>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var options = new AggregateBucketOptions<BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket( e => e.Year, boundaries, g => new { _id = default(BsonValue), Years = g.Select(e => e.Year), Count = g.Count() }, options); var stage = result.Stages.Single(); var serializerRegistry = BsonSerializer.SerializerRegistry; var exhibitSerializer = serializerRegistry.GetSerializer<Exhibit>(); var renderedStage = stage.Render(exhibitSerializer, serializerRegistry); renderedStage.Document.Should().Be("{ $bucket : { groupBy : \"$year\", boundaries : [ 1900, 1920, 1950 ], default : \"Unknown\", output : { Years : { $push : \"$year\" }, Count : { $sum : 1 } } } }"); }
public void Bucket_with_output_should_return_expected_result() { RequireServer.Check().Supports(Feature.AggregateBucketStage); EnsureTestData(); var collection = __database.GetCollection<BsonDocument>(__collectionNamespace.CollectionName); var subject = collection.Aggregate(); var groupBy = (AggregateExpressionDefinition<BsonDocument, BsonValue>)"$year"; var boundaries = new BsonValue[] { 1900, 1920, 1950 }; var output = (ProjectionDefinition<BsonDocument, BsonDocument>)"{ years : { $push : \"$year\" }, count : { $sum : 1 } }"; var options = new AggregateBucketOptions<BsonValue> { DefaultBucket = (BsonValue)"Unknown" }; var result = subject.Bucket(groupBy, boundaries, output, options).ToList(); result.Should().Equal( BsonDocument.Parse("{ _id : 1900, years : [ 1902 ], count : 1 }"), BsonDocument.Parse("{ _id : 1920, years : [ 1926, 1925 ], count : 2 }"), BsonDocument.Parse("{ _id : \"Unknown\", years : [ ], count : 1 }")); }
public IAggregateFluent <TNewResult> Bucket <TValue, TNewResult>(AggregateExpressionDefinition <BsonDocument, TValue> groupBy, IEnumerable <TValue> boundaries, ProjectionDefinition <BsonDocument, TNewResult> output, AggregateBucketOptions <TValue> options = null) { return(BlockProvider.Bucket <TValue, TNewResult>(groupBy, boundaries, output, options)); }