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));
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]); }}}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)`