Chapter 6. Aggregation
MongoDB provides a number of aggregation tools that go beyond basic query functionality. These range from simply counting the number of documents in a collection to using MapReduce to do complex data analysis.
count
The simplest aggregation tool is count, which
returns the number of documents in the collection:
> db.foo.count()
0
> db.foo.insert({"x" : 1})
> db.foo.count()
1Counting the total number of documents in a collection is fast regardless of collection size.
You can also pass in a query, and Mongo will count the number of results for that query:
> db.foo.insert({"x" : 2})
> db.foo.count()
2
> db.foo.count({"x" : 1})
1This can be useful for getting a total for pagination: “displaying results 0–10 of 439.” Adding criteria does make the count slower, however.
distinct
The distinct command finds all of the distinct
values for a given key. You must specify a collection and key:
> db.runCommand({"distinct" : "people", "key" : "age"})For example, suppose we had the following documents in our collection:
{"name" : "Ada", "age" : 20}
{"name" : "Fred", "age" : 35}
{"name" : "Susan", "age" : 60}
{"name" : "Andy", "age" : 35}If you call distinct on the "age" key, you will
get back all of the distinct ages:
> db.runCommand({"distinct" : "people", "key" : "age"})
{"values" : [20, 35, 60], "ok" : 1}A common question at this point is if there’s a way to get all of the distinct keys in a collection. There is no built-in way of doing this, although you can write something to ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access