MongoDB 2.2 adds aggregation
The latest release of MongoDB, version 2.2, has been announced and is making it easier to process documents inside the NoSQL database with the addition of an Aggregation Framework to the JSON document storing server. The NoSQL database developed by 10Gen also sees improvements in "Data Center Awareness", for situations where clusters of the database are being operated over a number of geographically diverse locations, by allowing data to be sharded on the basis of tags.
For better performance, the developers have also eliminated the global lock in its mongod process and moved locking to a per database level. Where systems have a single database in use, concurrency should also be improved because a new subsystem tries to avoid locking on page faults.
The Aggregation Framework, now available as production ready in MongoDB 2.2, allows users to perform operations similar to SQL's GROUP BY
without using the MapReduce capabilities of the database. Documents can be aggregated in pipelines which can map fields, filter down documents that don't match, flatten arrays, find maximum or minimum values, or group documents. Calculations can then be applied to the documents in the pipelines. For example,
db.zipcodes.aggregate({ $group :
{ _id : "$state",
totalPop : { $sum : "$pop" } } },
{ $match : {totalPop : { $gte : 10*1000*1000 } } } )
collects all the documents from the "zipcodes" collection using the $group
operator and creates a document with an _id field for each state, calculates the total population per state with $sum
and finally discards any records where the total population is not greater than ten million (using $match
and $gte
).
Another feature allows for collections to have data with a TTL (time to live), which can be removed from the collection when the time has expired. These headline features are complemented by a range of smaller enhancements such as a more bash-like shell, the ability send logs to syslog, and a touch command to force reading of data into memory.
Full details of all the changes in MongoDB 2.2 are available in the release notes, which also include instructions how to upgrade. MongoDB 2.2 is available to download as binaries for 32- and 64-bit Linux, Windows, Mac OS X and 64-bit Solaris. Source code is also available and is licensed under the AGPLv3. 10Gen also supply commercially licensed versions of MongoDB.
(djwm)