Exemplo n.º 1
0
        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\" } }");
        }
Exemplo n.º 3
0
        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\" } }");
        }
Exemplo n.º 4
0
        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\" } }");
        }
Exemplo n.º 5
0
        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));
        }
Exemplo n.º 6
0
        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 }"));
        }
Exemplo n.º 12
0
 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));
 }