public class Aggregation extends Object
Aggregation
is a representation of a list of aggregation steps to be performed by the MongoDB Aggregation
Framework.Modifier and Type | Field and Description |
---|---|
static String |
CURRENT
References the start of the field path being processed in the aggregation pipeline stage.
|
static AggregationOperationContext |
DEFAULT_CONTEXT |
static AggregationOptions |
DEFAULT_OPTIONS |
protected AggregationPipeline |
pipeline |
static String |
REMOVE
A variable to conditionally exclude a field.
|
static String |
ROOT
References the root document, i.e. the top-level document, currently being processed in the aggregation pipeline
stage.
|
Modifier | Constructor and Description |
---|---|
protected |
Aggregation(AggregationOperation... aggregationOperations)
Creates a new
Aggregation from the given AggregationOperation s. |
protected |
Aggregation(List<AggregationOperation> aggregationOperations)
Creates a new
Aggregation from the given AggregationOperation s. |
protected |
Aggregation(List<AggregationOperation> aggregationOperations,
AggregationOptions options)
Creates a new
Aggregation from the given AggregationOperation s. |
Modifier and Type | Method and Description |
---|---|
static AddFieldsOperation.AddFieldsOperationBuilder |
addFields()
Obtain an
builder instance to create a new AddFieldsOperation . |
protected static List<AggregationOperation> |
asAggregationList(AggregationOperation... aggregationOperations) |
static Fields |
bind(String name,
String target)
Creates a new
Fields instance from the given field name and target reference. |
static BucketOperation |
bucket(AggregationExpression groupByExpression)
Creates a new
BucketOperation given group-by expression . |
static BucketOperation |
bucket(String groupByField)
Creates a new
BucketOperation given groupByField. |
static BucketAutoOperation |
bucketAuto(AggregationExpression groupByExpression,
int buckets)
Creates a new
BucketAutoOperation given group-by expression . |
static BucketAutoOperation |
bucketAuto(String groupByField,
int buckets)
Creates a new
BucketAutoOperation given groupByField. |
static CountOperation.CountOperationBuilder |
count()
Creates a new
CountOperation.CountOperationBuilder . |
static FacetOperation |
facet()
Creates a new
FacetOperation . |
static FacetOperation.FacetOperationBuilder |
facet(AggregationOperation... aggregationOperations)
Creates a new
FacetOperation.FacetOperationBuilder given Aggregation . |
static Fields |
fields(String... fields)
Creates a new
Fields instance for the given field names. |
static GeoNearOperation |
geoNear(NearQuery query,
String distanceField)
|
AggregationOptions |
getOptions()
Get the
AggregationOptions . |
AggregationPipeline |
getPipeline() |
static GraphLookupOperation.StartWithBuilder |
graphLookup(String fromCollection)
Creates a new
GraphLookupOperation.GraphLookupOperationFromBuilder to construct a
GraphLookupOperation given fromCollection. |
static GroupOperation |
group(Fields fields)
Creates a new
GroupOperation for the given Fields . |
static GroupOperation |
group(String... fields)
Creates a new
GroupOperation for the given fields. |
static LimitOperation |
limit(long maxElements)
Creates a new
LimitOperation limiting the result to the given number of elements. |
static LookupOperation |
lookup(Field from,
Field localField,
Field foreignField,
Field as)
Creates a new
LookupOperation for the given Fields . |
static LookupOperation |
lookup(String from,
String localField,
String foreignField,
String as)
Creates a new
LookupOperation . |
static MatchOperation |
match(AggregationExpression expression)
Creates a new
MatchOperation using the given AggregationExpression . |
static MatchOperation |
match(Criteria criteria)
Creates a new
MatchOperation using the given Criteria . |
static MatchOperation |
match(CriteriaDefinition criteria)
Creates a new
MatchOperation using the given CriteriaDefinition . |
static MergeOperation.MergeOperationBuilder |
merge()
Obtain a
builder instance to create a new MergeOperation . |
static Aggregation |
newAggregation(AggregationOperation... operations)
Creates a new
Aggregation from the given AggregationOperation s. |
static <T> TypedAggregation<T> |
newAggregation(Class<T> type,
AggregationOperation... operations)
Creates a new
TypedAggregation for the given type and AggregationOperation s. |
static <T> TypedAggregation<T> |
newAggregation(Class<T> type,
List<? extends AggregationOperation> operations)
Creates a new
TypedAggregation for the given type and AggregationOperation s. |
static Aggregation |
newAggregation(List<? extends AggregationOperation> operations)
Creates a new
Aggregation from the given AggregationOperation s. |
static AggregationOptions.Builder |
newAggregationOptions()
Returns a new
AggregationOptions.Builder . |
static AggregationUpdate |
newUpdate(AggregationOperation... operations)
Creates a new
AggregationUpdate from the given AggregationOperation s. |
static OutOperation |
out(String outCollectionName)
Creates a new
OutOperation using the given collection name. |
static String |
previousOperation()
A pointer to the previous
AggregationOperation . |
static ProjectionOperation |
project(Class<?> type)
Creates a new
ProjectionOperation including all top level fields of the given given Class . |
static ProjectionOperation |
project(Fields fields)
Creates a new
ProjectionOperation including the given Fields . |
static ProjectionOperation |
project(String... fields)
Creates a new
ProjectionOperation including the given fields. |
static RedactOperation |
redact(AggregationExpression condition)
Creates a new
RedactOperation that can restrict the content of a document based on information stored
within the document itself. |
static ReplaceRootOperation.ReplaceRootOperationBuilder |
replaceRoot()
Factory method to create a new
ReplaceRootOperation.ReplaceRootDocumentOperationBuilder to configure a
ReplaceRootOperation . |
static ReplaceRootOperation |
replaceRoot(AggregationExpression aggregationExpression)
Factory method to create a new
ReplaceRootOperation for the field with the given
AggregationExpression . |
static ReplaceRootOperation |
replaceRoot(String fieldName)
Factory method to create a new
ReplaceRootOperation for the field with the given name. |
static SampleOperation |
sample(long sampleSize)
Creates a new
SampleOperation to select the specified number of documents from its input randomly. |
static SkipOperation |
skip(int elementsToSkip)
Deprecated.
prepare to get this one removed in favor of
skip(long) . |
static SkipOperation |
skip(long elementsToSkip)
Creates a new
SkipOperation skipping the given number of elements. |
static SortOperation |
sort(Sort.Direction direction,
String... fields)
|
static SortOperation |
sort(Sort sort)
Factory method to create a new
SortOperation for the given Sort . |
static SortByCountOperation |
sortByCount(AggregationExpression groupAndSortExpression)
Creates a new
SortByCountOperation given group and sort expression . |
static SortByCountOperation |
sortByCount(String field)
Creates a new
SortByCountOperation given groupByField. |
org.bson.Document |
toDocument(String inputCollectionName,
AggregationOperationContext rootContext)
Converts this
Aggregation specification to a Document . |
List<org.bson.Document> |
toPipeline(AggregationOperationContext rootContext)
|
String |
toString() |
static UnwindOperation |
unwind(String field)
Factory method to create a new
UnwindOperation for the field with the given name. |
static UnwindOperation |
unwind(String field,
boolean preserveNullAndEmptyArrays)
Factory method to create a new
UnwindOperation for the field with the given name and
preserveNullAndEmptyArrays . |
static UnwindOperation |
unwind(String field,
String arrayIndex)
Factory method to create a new
UnwindOperation for the field with the given name including the name of a
new field to hold the array index of the element as arrayIndex . |
static UnwindOperation |
unwind(String field,
String arrayIndex,
boolean preserveNullAndEmptyArrays)
Factory method to create a new
UnwindOperation for the field with the given nameincluding the name of a new
field to hold the array index of the element as arrayIndex using preserveNullAndEmptyArrays . |
Aggregation |
withOptions(AggregationOptions options)
Returns a copy of this
Aggregation with the given AggregationOptions set. |
public static final String ROOT
public static final String CURRENT
public static final String REMOVE
$projection
, a field set to the variable
REMOVE is excluded from the output.
db.books.aggregate( [
{
$project: {
title: 1,
"author.first": 1,
"author.last" : 1,
"author.middle": {
$cond: {
if: { $eq: [ "", "$author.middle" ] },
then: "$$REMOVE",
else: "$author.middle"
}
}
}
} ] )
public static final AggregationOperationContext DEFAULT_CONTEXT
public static final AggregationOptions DEFAULT_OPTIONS
protected final AggregationPipeline pipeline
protected Aggregation(AggregationOperation... aggregationOperations)
Aggregation
from the given AggregationOperation
s.aggregationOperations
- must not be null or empty.protected Aggregation(List<AggregationOperation> aggregationOperations)
Aggregation
from the given AggregationOperation
s.aggregationOperations
- must not be null or empty.protected Aggregation(List<AggregationOperation> aggregationOperations, AggregationOptions options)
Aggregation
from the given AggregationOperation
s.aggregationOperations
- must not be null.options
- must not be null or empty.public static Aggregation newAggregation(List<? extends AggregationOperation> operations)
Aggregation
from the given AggregationOperation
s.operations
- must not be null or empty.public static Aggregation newAggregation(AggregationOperation... operations)
Aggregation
from the given AggregationOperation
s.operations
- must not be null or empty.public static AggregationUpdate newUpdate(AggregationOperation... operations)
AggregationUpdate
from the given AggregationOperation
s.operations
- can be empty but must not be null.AggregationUpdate
.public Aggregation withOptions(AggregationOptions options)
Aggregation
with the given AggregationOptions
set. Note that options are
supported in MongoDB version 2.6+.options
- must not be null.Aggregation
.public static <T> TypedAggregation<T> newAggregation(Class<T> type, List<? extends AggregationOperation> operations)
TypedAggregation
for the given type and AggregationOperation
s.type
- must not be null.operations
- must not be null or empty.public static <T> TypedAggregation<T> newAggregation(Class<T> type, AggregationOperation... operations)
TypedAggregation
for the given type and AggregationOperation
s.type
- must not be null.operations
- must not be null or empty.protected static List<AggregationOperation> asAggregationList(AggregationOperation... aggregationOperations)
aggregationOperations
- must not be null or empty.public AggregationOptions getOptions()
AggregationOptions
.public static String previousOperation()
AggregationOperation
.public static AddFieldsOperation.AddFieldsOperationBuilder addFields()
builder
instance to create a new AddFieldsOperation
.
$set
that is
an alias for $addFields
.AddFieldsOperation.AddFieldsOperationBuilder
.AddFieldsOperation
public static ProjectionOperation project(String... fields)
ProjectionOperation
including the given fields.fields
- must not be null.ProjectionOperation
.public static ProjectionOperation project(Fields fields)
ProjectionOperation
including the given Fields
.fields
- must not be null.ProjectionOperation
.public static ProjectionOperation project(Class<?> type)
ProjectionOperation
including all top level fields of the given given Class
.type
- must not be null.ProjectionOperation
.public static UnwindOperation unwind(String field)
UnwindOperation
for the field with the given name.field
- must not be null or empty.UnwindOperation
.public static ReplaceRootOperation replaceRoot(String fieldName)
ReplaceRootOperation
for the field with the given name.fieldName
- must not be null or empty.ReplaceRootOperation
.public static ReplaceRootOperation replaceRoot(AggregationExpression aggregationExpression)
ReplaceRootOperation
for the field with the given
AggregationExpression
.aggregationExpression
- must not be null.ReplaceRootOperation
.public static ReplaceRootOperation.ReplaceRootOperationBuilder replaceRoot()
ReplaceRootOperation.ReplaceRootDocumentOperationBuilder
to configure a
ReplaceRootOperation
.public static UnwindOperation unwind(String field, boolean preserveNullAndEmptyArrays)
UnwindOperation
for the field with the given name and
preserveNullAndEmptyArrays
. Note that extended unwind is supported in MongoDB version 3.2+.field
- must not be null or empty.preserveNullAndEmptyArrays
- true to output the document if path is null, missing or
array is empty.UnwindOperation
public static UnwindOperation unwind(String field, String arrayIndex)
UnwindOperation
for the field with the given name including the name of a
new field to hold the array index of the element as arrayIndex
. Note that extended unwind is supported in
MongoDB version 3.2+.field
- must not be null or empty.arrayIndex
- must not be null or empty.UnwindOperation
public static UnwindOperation unwind(String field, String arrayIndex, boolean preserveNullAndEmptyArrays)
UnwindOperation
for the field with the given nameincluding the name of a new
field to hold the array index of the element as arrayIndex
using preserveNullAndEmptyArrays
. Note
that extended unwind is supported in MongoDB version 3.2+.field
- must not be null or empty.arrayIndex
- must not be null or empty.preserveNullAndEmptyArrays
- true to output the document if path is null, missing or
array is empty.UnwindOperation
public static GroupOperation group(String... fields)
GroupOperation
for the given fields.fields
- must not be null.GroupOperation
.public static GroupOperation group(Fields fields)
GroupOperation
for the given Fields
.fields
- must not be null.public static GraphLookupOperation.StartWithBuilder graphLookup(String fromCollection)
GraphLookupOperation.GraphLookupOperationFromBuilder
to construct a
GraphLookupOperation
given fromCollection.fromCollection
- must not be null or empty.GraphLookupOperation.StartWithBuilder
for creating a GraphLookupOperation
.public static SortOperation sort(Sort sort)
SortOperation
for the given Sort
.sort
- must not be null.SortOperation
.public static SortOperation sort(Sort.Direction direction, String... fields)
direction
- must not be null.fields
- must not be null.SortOperation
.public static SortByCountOperation sortByCount(String field)
SortByCountOperation
given groupByField.field
- must not be null or empty.SortByCountOperation
.public static SortByCountOperation sortByCount(AggregationExpression groupAndSortExpression)
SortByCountOperation
given group and sort expression
.groupAndSortExpression
- must not be null.SortByCountOperation
.@Deprecated public static SkipOperation skip(int elementsToSkip)
skip(long)
.SkipOperation
skipping the given number of elements.elementsToSkip
- must not be less than zero.SkipOperation
.public static SkipOperation skip(long elementsToSkip)
SkipOperation
skipping the given number of elements.elementsToSkip
- must not be less than zero.SkipOperation
.public static LimitOperation limit(long maxElements)
LimitOperation
limiting the result to the given number of elements.maxElements
- must not be less than zero.LimitOperation
.public static SampleOperation sample(long sampleSize)
SampleOperation
to select the specified number of documents from its input randomly.sampleSize
- must not be less than zero.SampleOperation
.public static MatchOperation match(Criteria criteria)
MatchOperation
using the given Criteria
.criteria
- must not be null.MatchOperation
.public static MatchOperation match(CriteriaDefinition criteria)
MatchOperation
using the given CriteriaDefinition
.criteria
- must not be null.MatchOperation
.public static MatchOperation match(AggregationExpression expression)
MatchOperation
using the given AggregationExpression
.expression
- must not be null.MatchOperation
.public static GeoNearOperation geoNear(NearQuery query, String distanceField)
GeoNearOperation
instance from the given NearQuery
and the distanceField
. The
distanceField
defines output field that contains the calculated distance.query
- must not be null.distanceField
- must not be null or empty.GeoNearOperation
.public static MergeOperation.MergeOperationBuilder merge()
builder
instance to create a new MergeOperation
.MergeOperation.MergeOperationBuilder
.MergeOperation
public static OutOperation out(String outCollectionName)
OutOperation
using the given collection name. This operation must be the last operation in
the pipeline.outCollectionName
- collection name to export aggregation results. The OutOperation
creates a new
collection in the current database if one does not already exist. The collection is not visible until the
aggregation completes. If the aggregation fails, MongoDB does not create the collection. Must not be
null.OutOperation
.public static BucketOperation bucket(String groupByField)
BucketOperation
given groupByField.groupByField
- must not be null or empty.BucketOperation
.public static BucketOperation bucket(AggregationExpression groupByExpression)
BucketOperation
given group-by expression
.groupByExpression
- must not be null.BucketOperation
.public static BucketAutoOperation bucketAuto(String groupByField, int buckets)
BucketAutoOperation
given groupByField.groupByField
- must not be null or empty.buckets
- number of buckets, must be a positive integer.BucketAutoOperation
.public static BucketAutoOperation bucketAuto(AggregationExpression groupByExpression, int buckets)
BucketAutoOperation
given group-by expression
.groupByExpression
- must not be null.buckets
- number of buckets, must be a positive integer.BucketAutoOperation
.public static FacetOperation facet()
FacetOperation
.FacetOperation
.public static FacetOperation.FacetOperationBuilder facet(AggregationOperation... aggregationOperations)
FacetOperation.FacetOperationBuilder
given Aggregation
.aggregationOperations
- the sub-pipeline, must not be null.FacetOperation
.public static LookupOperation lookup(String from, String localField, String foreignField, String as)
LookupOperation
.from
- must not be null.localField
- must not be null.foreignField
- must not be null.as
- must not be null.public static LookupOperation lookup(Field from, Field localField, Field foreignField, Field as)
LookupOperation
for the given Fields
.from
- must not be null.localField
- must not be null.foreignField
- must not be null.as
- must not be null.public static CountOperation.CountOperationBuilder count()
CountOperation.CountOperationBuilder
.public static RedactOperation redact(AggregationExpression condition)
RedactOperation
that can restrict the content of a document based on information stored
within the document itself.
Aggregation.redact(ConditionalOperators.when(Criteria.where("level").is(5)) // .then(RedactOperation.PRUNE) // .otherwise(RedactOperation.DESCEND));
condition
- Any AggregationExpression
that resolves to $$DESCEND, $$PRUNE, or
$$KEEP. Must not be null.RedactOperation
. Never null.public static Fields fields(String... fields)
Fields
instance for the given field names.fields
- must not be null.Fields
.Fields.fields(String...)
public static Fields bind(String name, String target)
Fields
instance from the given field name and target reference.name
- must not be null or empty.target
- must not be null or empty.Fields
.public static AggregationOptions.Builder newAggregationOptions()
AggregationOptions.Builder
.AggregationOptions.Builder
.public List<org.bson.Document> toPipeline(AggregationOperationContext rootContext)
public AggregationPipeline getPipeline()
AggregationPipeline
.public org.bson.Document toDocument(String inputCollectionName, AggregationOperationContext rootContext)
Aggregation
specification to a Document
.
toPipeline(AggregationOperationContext)
to render
an aggregation pipeline.inputCollectionName
- the name of the input collection.Document
representing this aggregation.Copyright © 2011–2022 Pivotal Software, Inc.. All rights reserved.