Artículos
MongoDB

Ordenaciones en MongoDB

07/Feb/2014

A la hora de realizar una consulta podemos encontrarnos la necesidad de realizar una ordenación de los datos. Ya que si no decimos nada las consultas en MongoDB devolverán los datos tal cual se encuentren almacenados en la base de datos, es decir, con su orden de inserción.

Así si queremos realizar ordenaciones en MongoDB deberemos de utilizar el método .sort(). La sintaxis del método MongoDB .sort() es la siguiente:

db.coleccion.find(filtro).sort(ordenacion);

En la ordenación indicaremos el campo o los campos por los cuales queremos ordenar. De ifual forma indicaremos el tipo de ordenación que queremos: ordenación ascendente u ordenación ascendente.

La estructura de la ordenación es la siguiente:

.sort({campo1:tipoordencion,campo2:tipoordenacion,...,campoN:tipoordenacion});

Dónde los tipos de ordenación y sus valores son:

  • Ascendente: 1
  • Descendente: -1

Así que partiendo de nuestra colección de ciudades:

{ "_id" : ObjectId("525ab02733b01a66a9dcbc5b"), "ciudad" : "Madrid", "habitantes" : 3233527 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5c"), "ciudad" : "Barcelona", "habitantes" : 1620943 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5d"), "ciudad" : "Valencia", "habitantes" : 797028 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5e"), "ciudad" : "Sevilla", "habitantes" : 702355 }
{ "_id" : ObjectId("525ab02733b01a66a9dcbc5f"), "ciudad" : "Zaragoza", "habitantes" : 679624 }

Podemos realizar las siguientes ordenaciones en MongoDB. Si queremos ordenar las ciudades de forma ascendente escribiremos:

cursor = db.ciudades.find().sort({ciudad:1});

Por el contrario, si queremos ordenar las ciudades de forma descendente:

cursor = db.ciudades.find().sort({ciudad:-1});

Las ordenaciones en MongoDB solo se pueden realizar con tamaños menores a 32Mb. En caso contrario hay que utilizar el método .limit() para acortarlas.

La consulta realizada con el método .find() puede tener un filtro:

cursor = db.ciudades.find({ciudad:/^M/}).sort({ciudad:-1});

En este caso se ordenaria el subconjunto de documentos devueltos por la consulta filtrada.

Podemos establecer varios campos de ordenación, los cuales se ejecutarían en el orden en el que están establecidos:

cursor = db.ciudades.find().sort({ciudad:-1,habitantes:1});

De igual manera podemos seguir concatenando métodos en la consulta y podemos limitar el número de documentos a devolver después de haber utilizado el método .sort().

cursor = db.ciudades.find().sort({ciudad:1}).limit(4);

Eso sí, la final no se te olvide recorrer el cursor para mostrar el contenido del mismo:

while (cursor.hasNext()){
  printjson(cursor.next());
}

Ya sabemos como realizar ordenaciones en MongoDB.

Código Fuente

Descárgate el código fuente de Ordenaciones en MongoDB
Y si te ha gustado nuestro código fuente puedes regalarnos una estrella Star

Vídeos sobre MongoDB

Disfruta también de nuestros artículos sobre MongoDB en formato vídeo. Aprovecha y suscribete a nuestro canal.

Test MongoDB

¿Te atreves a probar tus habilidades y conocimiento en MongoDB con nuestro test?

Test MongoDB
Suscribir
Notificar de
guest
1 Comentario
Recientes
Anteriores Más votados
Opiniones integradas
Ver todos los comentarios