Ticket Details

mongodb sorting not working

ENHANCEMENT Ticket (closed)

###What happened:
- When trying to order a collection after a field the returned results are in the order that they were inserted in the database.


###What was expected:
- Model::find('all',array('order'=>array('name'=>1)));
- Model::find('all',array('order'=>array('name'=>-1)));
- Model::find('all',array('order'=>array('name'=>1), 'limit'=>50));

on 02.11.10 reported by: claudiuapetrei owned by: nate

Updates

on 03.12.10 by claudiu
  • version was changed to lithium-0.7
  • type was changed to enhancement
The syntax is $results->sort(array('field'=>'mode')) , the Mongodb source was sending $results->sort('field');

Wrote a fix for order  // MongoDb.php line 228
 
{{{			
$order = explode(' ', preg_replace('/\s\s+/',' ',$order)) + array('default', 'desc');				 
switch(strtolower($order[1])) {
	case "asc" :
		$order[1] = 1;
	break;
	case "desc" :
		$order[1] = -1;
	break;
	default:
		$order[1] = 1;			
}
$order = array($order[0]=>$order[1]);
}}}
on 04.18.10 by nate
  • owner was changed to nate
  • status was changed to in progress
(fixed) on 05.02.10 by nate
  • status was changed to closed
  • resolution was changed to fixed
This has been implemented in [44dd1a6041fc1f2cfdc6e4151a336eb0d0baf996], and the `MongoDb` adapter now accepts any of the following syntaxes:

 - `'order' => 'field'`
 - `'order' => array('field', 'field2')`
 - `'order' => array('field' => asc, 'field2' => desc)`
 - `'order' => array('field' => 1, 'field2' => -1)`