How to find the document with maximum size in MongoDB collection
The command to get document size is Object.bsonsize. The next query is to find the document in a small collection, cause it can be slow:
db.getCollection('my_collection').find({}).map(doc => {
return {_id: doc._id, size: Object.bsonsize(doc)};
}).reduce((a, b) => a.size > b.size ? a : b)
To do this faster with mongo mapReduce:
db.getCollection('my_collection').mapReduce(
function() {
emit('size', {_id: this._id, size: Object.bsonsize(this)});
},
function(key, values) {
return values.reduce((a, b) => a.size > b.size ? a : b);
},
{out: {inline: 1}}
)