Ir al contenido

Ordenaciones en MongoDB

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()]( “MongoDB Sort”).

La sintaxis del método MongoDB [.sort()]( “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 igual forma indicaremos el tipo de ordenación que queremos: ordenación ascendente u ordenación descendente. 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()]( “MongoDB 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()]( “MongoDB Sort”).

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

Eso sí, al 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.

Foto de Víctor Cuervo

Víctor Cuervo

Programador, Arquitecto IT, álter ego de Línea de Código, amante de las tecnologías, generador de conocimiento y facilitador del aprendizaje.

Descarga el código de Ordenaciones en MongoDB

Aprende a realizar ordenaciones en MongoDB con nuestro sencillo método .sort() y mejora la forma en que consultas y gestionas tus datos.

Descargar código