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
Was this helpful?