Calculate the median in MongoDB aggregation framework

user3080286 picture user3080286 · Dec 8, 2013 · Viewed 11.2k times · Source

Is there a way to calculate the median using the MongoDB aggregation framework?

Answer

drmirror picture drmirror · Mar 11, 2014

The median is somewhat tricky to compute in the general case, because it involves sorting the whole data set, or using a recursion with a depth that is also proportional to the data set size. That's maybe the reason why many databases don't have a median operator out of the box (MySQL doesn't have one, either).

The simplest way to compute the median would be with these two statements (assuming the attribute on which we want to compute the median is called a and we want it over all documents in the collection, coll):

count = db.coll.count();
db.coll.find().sort( {"a":1} ).skip(count / 2 - 1).limit(1);

This is the equivalent to what people suggest for MySQL.