Capitulo 10. Bases datos sin esquema

Capitulo 10.Bases datos sin esquema

Las bases de datos NoSQL, nos permiten almacenar información no estructurada

  • Dentro del framework podemos realizar consultas sobre estas bases de datos y devolver un List<JmoordbResult> que contiene un HashMap, sobre el que podemos recorrerlo para procesar los resultados

  • Limitaciones los documentos embebidos son devueltos como un String con el siguiente formato Document{field1:value1, fieldn:valuen}}.

  • Indicamos el nombre de la base de datos , esta limitado a una base de datos donde tengamos conexión.

  • Pasamos el nombre de la colección.

  • Podemos ordenar también el resultado

  • Soporta Paginaciòn

Métodos

public List<JmoordbResult> unknown(String database,String collection, Document... doc)

public List<JmoordbResult>unknownSort(String database,String collection, Document doc,Document... docSort)

public List<JmoordbResult> unknown(String database,String collection, Bson filter,Document... docSort)

public List<JmoordbResult> unknownPagination(String database,String collection,Integer pageNumber, Integer rowsForPage, Document... doc)

public List<JmoordbResult> unknownPaginationSort(String database,String collection,Integer pageNumber, Integer rowsForPage, Document doc,Document... docSort)

Ejemplo:

Tenemos una colección llamada unknown con datos de diversos tipos.

Documento

1

cedula, nombre,edad

2

temperatura

3

id, padres(papa,mama)

4

pais, provincia(los santos(distrito)

 db.unknown.find().pretty()                                                             
{                                                                                        
        "_id" : ObjectId("5c3f332ad4ea5a0c2d0d7cd9"),                                    
        "cedula" : "7-8-8",                                                              
        "nombre" : "Aristides",                                                          
        "edad" : 45                                                                      
}                                                                                        
{ "_id" : ObjectId("5c3f33edd4ea5a0c2d0d7cda"), "temperatura" : 45.3 }  

{                                                                                        
        "_id" : ObjectId("5c3f341ad4ea5a0c2d0d7cdb"),                                    
        "id" : "maria",                                                                  
        "padres" : {                                                                     
                "papa" : "Juan",                                                         
                "mama" : "Dianna"                                                        
        }                                                                                
}                                                                                        
{                                                                                        
        "_id" : ObjectId("5c3f35f1d4ea5a0c2d0d7cdc"),                                    
        "pais" : "Panama",                                                               
        "provincia" : {                                                                  
                "los santos" : {                                                         
                        "distrito" : "La villa"                                          
                }                                                                        
        }
}
  • Consultar todos los documentos

 List<JmoordbResult> list = articuloRepository.unknown("store","unknown");

            if (list == null || list.isEmpty()) {
                System.out.println("No hay data con esa condicion");
            } else {
                System.out.println("..................................................");
                list.stream().map((j) -> {
                    System.out.println("------------------------------------------");
                    return j;
                }).forEachOrdered((j) -> {
                      System.out.println(".....");
                    j.getField().forEach((k, v) -> System.out.println("  Key: " + k + ": Value: " + v));
                });

Salida

Nota:

  • Recuerde que los embebidos se presentaran de la siguiente manera:

 Key: _id: Value: 5c3f35f1d4ea5a0c2d0d7cdc
 Key: provincia: Value: Document{{los santos=Document{{distrito=La villa}}}}
 Key: pais: Value: Panama
  • Filtrar los documentos mediante un Document()

  • Devuelve los documentos que cumplan la condición de filtro.

List<JmoordbResult> list = articuloRepository.unknown("store","unknown",new Document("cedula","7-8-8") );

            if (list == null || list.isEmpty()) {
                System.out.println("No hay data con esa condicion");
            } else {
                System.out.println("..................................................");
                list.stream().map((j) -> {
                    System.out.println("------------------------------------------");
                    return j;
                }).forEachOrdered((j) -> {
                    System.out.println(".....");
                    j.getField().forEach((k, v) -> System.out.println("  Key: " + k + ": Value: " + v));
                });


            }

Salida:

Usando Paginacion

  • Mostrar dos primeros registros por pagina

  • Se pueden hace filtros y ordenación

 List<JmoordbResult> list = articuloRepository.unknownPagination("store","unknown",1,2);

            if (list == null || list.isEmpty()) {
                System.out.println("No hay data con esa condicion");
            } else {
                System.out.println("..................................................");
                list.stream().map((j) -> {
                    System.out.println("------------------------------------------");
                    return j;
                }).forEachOrdered((j) -> {
                    System.out.println(".....");
                    j.getField().forEach((k, v) -> System.out.println("  Key: " + k + ": Value: " + v));
                });


            }

Usando Filtro (Bson)

  • Filtrar id= maria

  • Usamos los Builder directamente

List<JmoordbResult> list = articuloRepository.unknown("store","unknown",eq("id","maria") );

            if (list == null || list.isEmpty()) {
                System.out.println("No hay data con esa condicion");
            } else {
                System.out.println("..................................................");
                list.stream().map((j) -> {
                    System.out.println("------------------------------------------");
                    return j;
                }).forEachOrdered((j) -> {
                    System.out.println(".....");
                    j.getField().forEach((k, v) -> System.out.println("  Key: " + k + ": Value: " + v));
                });


            }

Salida:

Last updated