In order to do sort on a findOne you have to:
find(query).limit(1).sort(sortBy).next()
It would be more convenient to have sort support within the findOne method, for example:
findOne(query,fields,sort)
I am using Java but this is likely to apply to many other drivers.