-
Configure MongoDB with Kerberos Authentication and Active Directory Authorization
-
Single Purpose Aggregation Operations
-
Additional Features and Behaviors
-
Additional Resources
Aggregations operations process data records and return computed
results. Aggregation operations group values from multiple documents
together, and can perform a variety of operations on the grouped data
to return a single result. MongoDB provides three ways to perform
aggregation: the
aggregation pipeline
, the
map-reduce function
, and
single purpose aggregation methods
.
Aggregation Pipeline
MongoDB’s
aggregation framework
is modeled on the concept of data
processing pipelines. Documents enter a multi-stage pipeline that
transforms the documents into an aggregated result.
The most basic pipeline stages provide
filters
that operate like
queries and
document transformations
that modify the form
of the output document.
Other pipeline operations provide tools for grouping and sorting
documents by specific field or fields as well as tools for aggregating
the contents of arrays, including arrays of documents. In addition,
pipeline stages can use
operators
for tasks such as calculating the
average or concatenating a string.
The pipeline provides efficient data aggregation using native
operations within MongoDB, and is the preferred method for data
aggregation in MongoDB.
The aggregation pipeline can operate on a
sharded collection
.
The aggregation pipeline can use indexes to improve its performance
during some of its stages. In addition, the aggregation pipeline has an
internal optimization phase. See
管道操作符和索引
and
聚合管道的优化
for details.
Map-Reduce
MongoDB also provides
map-reduce
operations
to perform aggregation. In general, map-reduce operations have two
phases: a
map
stage that processes each document and
emits
one or
more objects for each input document, and
reduce
phase that combines
the output of the map operation. Optionally, map-reduce can have a
finalize
stage to make final modifications to the result. Like other
aggregation operations, map-reduce can specify a query condition to
select the input documents as well as sort and limit the results.
Map-reduce uses custom JavaScript functions to perform the map and
reduce operations, as well as the optional
finalize
operation. While
the custom JavaScript provide great flexibility compared to the
aggregation pipeline, in general, map-reduce is less efficient and more
complex than the aggregation pipeline.
Map-reduce can operate on a
sharded collection
. Map reduce operations
can also output to a sharded collection. See
聚合管道和分片集合
and
Map-Reduce和分片集合
for details.
Starting in MongoDB 2.4, certain
mongo
shell
functions and properties are inaccessible in map-reduce
operations. MongoDB 2.4 also provides support for multiple
JavaScript operations to run at the same time. Before MongoDB 2.4,
JavaScript code executed in a single thread, raising concurrency
issues for map-reduce.
Single Purpose Aggregation Operations
MongoDB also provides
db.collection.count()
and
db.collection.distinct()
.
All of these operations aggregate documents from a single collection.
While these operations provide simple access to common aggregation
processes, they lack the flexibility and capabilities of the
aggregation pipeline and map-reduce.
Additional Features and Behaviors
For a feature comparison of the aggregation pipeline,
map-reduce, and the special group functionality, see
Aggregation Commands Comparison
.
-
聚合管道的优化