Skip to content

Repository files navigation

Build StatusStyleCILatest Stable VersionTotal DownloadsLatest Unstable VersionLicense

MongoAggregations

Library allowing easy access to the mongo aggregate framework

Builders

This library constructs aggregation pipelines using builders. You can add stages (instances of AggregationInterface), collections of stages (AggregationBags) or other builders to construct your pipeline. A special builder is the UnwindBuilder. This Builder will create a pipeline that can unwind both strings and arrays and databases that has the two mixed (the latter should be avoided). Basically the builder will transform any mongo field to an array and then unwind that array.

Example usage of the UnwindBuilder is in its Test: https://github.com/ConnectHolland/MongoAggregations/blob/master/tests/Builder/UnwindBuilderTest.php

Supported stages

This library currently supports the following stages in the aggregate framwork:

ClassOperatorDescription
Match$matchhttps://docs.mongodb.org/manual/reference/operator/aggregation/match/#pipe._S_match
Project$projecthttps://docs.mongodb.org/manual/reference/operator/aggregation/project/#pipe._S_project
Unwind$unwindhttps://docs.mongodb.org/manual/reference/operator/aggregation/unwind/#pipe._S_unwind
Group$grouphttps://docs.mongodb.org/manual/reference/operator/aggregation/group/#pipe._S_group
Sort$sorthttps://docs.mongodb.org/manual/reference/operator/aggregation/sort/
RangeProjectionA ranged projection stage, a special kind of $project which can map ranges (for example: 1 to 10) to strings (for example to 'low').

Supported operations

Within the stages operations can be used, these are currently supported:

ClassOperatorDescription
Sum$sumhttps://docs.mongodb.org/manual/reference/operator/aggregation/sum/#grp._S_sum
Condition$condhttps://docs.mongodb.org/manual/reference/operator/aggregation/cond/#exp._S_cond
Push$pushhttps://docs.mongodb.org/manual/reference/operator/aggregation/push/#grp._S_push
WeekOperation$weekhttps://docs.mongodb.org/manual/reference/operator/aggregation/week/
FieldOperationRename a field in a projection (example: {$project: {my_field: {'$some.field.hidden.in.complex.nesting'}}})
ArrayOperationAdd an expression in a projection using a mongo array (example: $operation = new ArrayOperation(['$year' => '$somedate']))

EmbeddedCollections

The library adds a class EmbeddedCollection which can be used to create a (temporary) collection that embeds documents that another collection has referenced.

Stages or operations that aren't supported by the library, can still be used by constructing arrays. However, creating a class and the abstraction layer that comes with that is to be preferred.

About

Library allowing easy access to the mongo aggregate framework

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages