Метод distinct
возвращает только выбранное поле, а не целые документы, поэтому вам нужно два (или более) запроса:
getCheckinsByX = (field, cb) ->
Checkin.find({ field }).limit(x).exec (err, checkins) ->
cb err, { field, checkins }
Checkin.distinct field, conditions, (err, results) ->
async.map results, getCheckinsByX, (err, checkinsByField) ->
# use list of checkins
Это может сгенерировать много запросов в БД, так что вы можетехотите изучить структуру агрегации или способ создания одного Checkin
запроса + группировки на клиенте.