Recorrer un cursor en MongoDB

06/Nov/2013 MongoDB , 1 Comentario

Cuando realizamos consultas sobre una colección en MongoDB lo que obtenemos como resultado es un cursor de documentos. Si queremos ver los documentos que contiene un cursor en MongoDB deberemos de recorrerlo.

Un cursor lo obtendremos cuando realizamos una consulta mediante MongoDB find. Por ejemplo al realizar la siguiente consulta:

  1. conn = new Mongo();
  2. db = conn.getDB("demografia");
  3.  
  4. cursor = db.ciudades.find();

La variable cursor será la que contenga el listado de documento. Ahora para recorrer un cursor en MongoDB deberemos de conocer una serie de métodos del cursor. El primer método es .hasNext() es un método que nos permite saber si quedan documentos por recorrer en el cursor, otro método es .next() el cual va moviendo el cursor y nos permite iterar por el cursor de documentos.

Lo que crearemos será un bucle que nos ayude a recorrer un cursos en MongoDB de la siguiente forma:

  1. while (cursor.hasNext()) {
  2. printjson(cursor.next());
  3. }

El método printjson nos vuelva el contenido JSON del documento. Si bien tenemos que saber que cada vez que ejecutemos el método .next() vamos a obtener un documento.

  1. documento = cursor.next();

Y al tener un documento podemos acceder a los campos del documento mediante una notación de punto. De esta forma si queremos acceder al campo ciudad lo haremos de la siguiente forma:

  1. print (documento.ciudad);

Siguiendo estas pautas podemos construir un bucle que recorra un cursor en MongoDB y muestre el contenido de la consulta de la siguiente forma:

  1. while (cursor.hasNext()) {
  2. doc = cursor.next();
  3.  
  4. // Imprimir un documento
  5. printjson(doc);
  6.  
  7. // Imprimir campos de un documento
  8. print("En " + doc.ciudad + " hay " + doc.habitantes + " habitantes.");
  9. }

Vídeos sobre MongoDB


Difunde el Conocimiento

Si te ha gustado el artículo o te ha sido de utilidad, no dejes de compartirlo con tus amigos en las redes sociales... Te estaremos muy agradecidos. :-D

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*