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() 1
Counting 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}) 1
This 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 ...
Get MongoDB: The Definitive Guide now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.