# Round

From NoSQLzoo

There are various ways of rounding in MongoDB.

Rounding is easy inside of a `MapReduce`

as it is possible to use the `Math`

object provided by JavaScript.

More information on `Math`

can be found here.

In MongoDB versions prior to 3.2 the `aggregation()`

method has no rounding functions, though it is still doable with `$mod`

and `$multiply`

, as shown here by the lead project manager at MongoDB.

As of MongoDB 3.2, it is possible to round up, down, and truncate via `$ceil`

, `$floor,`

and `$trunc`

respectively.

## MapReduce

db.world.mapReduce( function(){ emit(this.name, this.population); }, function(key, values){ return values; }, { finalize: function(key,values){ return { "population": values, "population in millions": Math.round(values/1000000) }; }, out: {inline: 1}, query: {"name": "United Kingdom"} } )

## Aggregate

db.world.aggregate([ {"$match": {"name": "United Kingdom"}}, {"$project":{ "_id": 1, "name": 1, "population":{"$divide": ["$population", 1000000]} }}, {"$project":{ "_id": 0, "name": 1, "population in millions": '$population', "population in millions (floored)":{ "$floor": "$population"}, "population in millions (ceiling)":{ "$ceil": "$population"}, "population in millions (truncated)":{ "$trunc": "$population"}, "population in millions (1dp with multiply / mod)":{ "$divide":[ {"$subtract":[ {"$multiply": ['$population', 100]}, {"$mod": [{"$multiply": ['$population',100]}, 1]} ]}, 100 ] } }} ]).pretty()