Código de Java - Consultas y filtros con MongoDB en Java

Imágen de perfil

Consultas y filtros con MongoDB en Javagráfica de visualizaciones


Java

Actualizado el 23 de Diciembre del 2015 por Julio (Creado el 20 de Diciembre del 2015)
1.245 visualizaciones desde el 20 de Diciembre del 2015. Una media de 28 por semana
Utilizaremos el método de find para realizar una consulta para recuperar datos de una colección en MongoDB.

Consulta de todos los documentos de la base de datos será devuelta en una colección, no aplicamos ningún filtro o criterio a la consulta, utilizamos el método de búsqueda
1
find()
que devuelve los resultados de la consulta en un
1
FindIterable
, que será el objeto sobre el que haremos las iteraciones para obtener los documentos:

1
FindIterable<Document> iterable = getMongodb().getCollection("restaurants").find();

Filtrando por un documento con el driver de Java podemos establecer condiciones de igualdad fácilmente con el documento de la siguiente forma new Document( , ).

Si el es en un documento incrustado o una matriz utilizaremos los puntos para acceder al campo, ahora simplemente vamos a establecer nuestra primera condición de igualdad para el : cuisine y con el value que le pasamos en el método listRestaurantsByCuisine(String cuisine):

1
FindIterable<Document> iterable = getMongodb().getCollection("restaurants").find(new Document("cuisine", cuisine));

En este ejemplo el establecimiento de la conexión con MongoDB se hace indicando el host y el puerto:
1
setMongoClient(new MongoClient("localhost", 27017));

En el anterior ejemplo: http://www.lawebdelprogramador.com/codigo/Java/3375-Insertando-datos-en-MongoDB-desde-Java.html, lo haciamos automáticamente, ya que si no se define se cogen los valores por defecto:
1
setMongoClient(new MongoClient());

Espero que te sea útil

Requerimientos

Para este ejemplo que forma parte de mi publicación Empezando con MongoDB en Java en 5 pasos: http://codigoxules.org/empezando-mongodb-java-5-pasos/ necesitamos instalar la base de datos MongoDB en nuestro sistema. En este enlace http://codigoxules.org/empezando-mongodb-java-5-pasos/#instacion-mondodb tienes un ejemplo de como hacerlo en Ubuntu y también de como cargar la base de datos de ejemplo test.

Crear el proyecto en Netbeans u otro IDE y añadir la librería de MongoDB con el driver para Java, en este enlace http://codigoxules.org/empezando-mongodb-java-5-pasos/#configuracion-del-entorno puedes ver como lo hice yo.

Descarga de la base de datos test utilizada: https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/dataset.json

Descarga de la librería de MongoDB: https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver-core/3.0.4/, el enlace es a MongoDB 3.0.4 que es la versión que yo utilice en el ejemplo.

1.0

Actualizado el 23 de Diciembre del 2015 (Creado el 20 de Diciembre del 2015)gráfica de visualizaciones de la versión: 1.0
1.246 visualizaciones desde el 20 de Diciembre del 2015. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package org.xulescode.mongodb;
 
import org.bson.Document;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoDatabase;
 
/**
 * Class tests for MongoDB queries by using collections.
 * Clase de pruebas para las consultas a MongoDB mediante el uso de colecciones.
 * @author xules
 */
public class JavaMongodbList {
    private MongoClient mongoClient;    // Java MongoDB client (Cliente Java MongoDB)
    private MongoDatabase mongodb;      // Database object (Objeto base de datos)
    /**
     * We establish the connection with the database <b>test</b>.
     * Establecemos la conexión con la base de datos <b>test</b>.
     */
    public void connectDatabase(){
        setMongoClient(new MongoClient("localhost", 27017));
        setMongodb(getMongoClient().getDatabase("test"));
    }
    /**
     * Get the list of all the restaurants (each is a document) in the database
     * and shown on screen.
     * Obtenemos la lista de todos los restaurantes (cada uno es un documento)
     * de la base de datos y los mostramos por pantalla.
     */
    public void listRestaurants(){
        // To return all documents in a collection, call the find method without a criteria document.
        // Para devolver todos los documentos en una colección, llamamos al método find sin ningún documento <b>criteria</b>
        FindIterable<Document> iterable = getMongodb().getCollection("restaurants").find();
        // Iterate the results and apply a block to each resulting document.
        // Iteramos los resultados y aplicacimos un bloque para cada documento.
        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {
                System.out.println(document);
            }
        });
    }
    /**
     * Obtenemos la lista de todos los restaurantes de la base de datos filtrando
     * por el tipo de cocina con el paso del parámetro <b>cuisine</b> y los mostramos por pantalla.
     * @param cuisine <code>String</code> data value to filter (valor para filtrar)
     */
    public void listRestaurantsByCuisine(String cuisine){
        // We return documents with the find method by setting a <b>criteria</ b> element equal to the cuisine.
        // Devolvemos los documentos con el método find estableciendo un <b>criteria</b> igual para el elemento cuisine.
        FindIterable<Document> iterable = getMongodb().getCollection("restaurants").find(new Document("cuisine", cuisine));
        // Iterate the results and apply a block to each resulting document.
        // Iteramos los resultados y aplicacimos un bloque para cada documento.
        iterable.forEach(new Block<Document>() {
            @Override
            public void apply(final Document document) {
                System.out.println(document);
 
            }
        });
    }
 
 
    public MongoClient getMongoClient() {
        return mongoClient;
    }
 
    public void setMongoClient(MongoClient mongoClient) {
        this.mongoClient = mongoClient;
    }
 
    public MongoDatabase getMongodb() {
        return mongodb;
    }
 
    public void setMongodb(MongoDatabase mongodb) {
        this.mongodb = mongodb;
    }
    /**
     * We execute methods to display restaurants.
     * Ejecutamos los métodos para mostrar los restaurantes.
     * @param args 
     */
    public static void main(String args[]){
        JavaMongodbList javaMongodbList = new JavaMongodbList();
        javaMongodbList.connectDatabase();
        // List all the restaurants (Mostramos todos los restaurantes).
        javaMongodbList.listRestaurants();
        // List the restaurants with "Galician" cuisine  (Mostramos los restaurantes con cuisine igual a "Galician").
        javaMongodbList.listRestaurantsByCuisine("Galician");
    }
}



Comentarios sobre la versión: 1.0 (0)


No hay comentarios
 

Comentar la versión: 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3385