Aha I know why now. No pre-defined schema; so when the EMongoSort goes to get the attribute names it actually gets an empty document with no properties set, hmm - to think of a good way of solving this.

Ok I have basically changed the first part of emongosort to do:

		if($this->attributes!==array())
			$attributes=$this->attributes;
		elseif($this->modelClass!==null){
			//new $this->modelClass;
			$attributes=EmongoDocument::model($this->modelClass)->attributeNames();
			if(empty($attributes)){
				// The previous statement can return null in certain models. So this is used as backup.
				$attributes=EmongoDocument::model($this->modelClass)->safeAttributeNames;
			}
		}else
			return false;

There is also another way of solviong this which might seem more appropiate to MongoDBs nature whihc is to define in your CGridView the schema you wanna show, i.e.:

<?php $this->widget('zii.widgets.grid.CGridView', array(
	'id'=>'user-grid',
	'dataProvider'=>$model->search(),
	'filter'=>$model,
	'columns'=>array(
		'_id',
		'username',
		'addresses',
		'create_time',
		array(
			'class'=>'CButtonColumn',
			'template'=>'{update}{delete}',
		),
	),
)); ?>

What do you think?

Should add this note to the readme as well so people know.