class MongoQueryTranslator extends
        AbstractQueryTranslator<DBObject, DBObject, DBObject> implements
        QueryTranslator<DBObject, DBObject, DBObject> {

    @Override
    public <T, R> DBObject translateProjection(Query<T, R> query) {
        if (query.getReturnFields().size() > 0) {
            DBObject fields = object();
            for(String field : query.getReturnFields()) {
                fields.put(
                        getPropertyResolver().resolve(field,
                                query.getEntityClass()), 1);
            }
            // if _id is not present then exclude it
            if (!fields.containsField(Mapper.ID_KEY)) {
                fields.put(Mapper.ID_KEY, 0);
            }
            return fields;
        } else {
            return null;
        }
    }

    public  MongoQueryTranslator(PropertyResolver propertyResolver);

}