La nueva versiòn soporta el manejo de colecciones con documentos sin esquemas.
<dependency>
<groupId>com.github.avbravo</groupId>
<artifactId>ejbjmoordb</artifactId>
<version>0.14</version>
</dependency>
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
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 devuelvos 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
Ejemplo:
Tenemos una colección llamada unknown con datos de diversos tipos.
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:
List<JmoordbResult> list = articuloRepository.unknown("store","unknown",eq("id","maria") );
- Recuerde que los embebidos se presentaran de la siguiente manera:
exit: Ctrl + ↩
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 {
list.stream().map((j) -> {
return j;
}).forEachOrdered((j) -> {
j.getField().forEach((k, v) -> System.out.println("Key:" + k + ":Value:" + v));
});
}
Usando Filtro (Bson)
- Filtrar id= maria
- Usamos los Builder directamente
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:
INSERTAR, ACTUALIZAR Y ELIMINAR
- Boolean unknownSave(String database, String collection,Document doc)
- Integer unknownReplaceOne(String database, String collection, Bson builder, Document docUpdate)
- Boolean unknownDelete(String database, String collection, Document doc)
- Boolean unknownDelete(String database, String collection, Bson builder)
- Boolean unknownDeleteAll(String database, String collection)
- Boolean unknownDeleteMany(String database, String collection, Document doc)
- Elimina múltiples documentos en base a un Bson
save
Document doc = new Document("id","x5").append("name","Ana");
if(articuloRepository.unknownSave("store","unknown",doc)){
System.out.println("Guardado");
}
else{
System.out.println("no se guardo");
}
eliminar
- Mediante un Document
Document doc = new Document("id","x5");
if(articuloRepository.unknownDelete("store","unknown",doc)){
System.out.println("eliminado");
}
else{
System.out.println("no se elimino");
}
- Mediante un Builder (Bson)
if(articuloRepository.unknownDelete("store","unknown",eq("id","x5"))){
System.out.println("eliminado");
}
else{
System.out.println("no se elimino");
}
Actualizar
- Actualiza un documento.
- Limitación que se debe escribir todos los campos del documento para que no se pierdan,
Document docUpdate = new Document("id","x5").append("name","Maria");
if(articuloRepository.unknownReplaceOne("store","unknown",eq("id","x5"), docUpdate)>0){
System.out.println("actualizado");
}
else{
System.out.println("no se actualizdo")
}