Skip to main content

ejbjmoordb 0.15 soporta colecciones sin esquema

ejbjmoordb 0.15 soporta colecciones sin esquema

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:
  • 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


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:

INSERTAR, ACTUALIZAR Y ELIMINAR

  • Boolean unknownSave(String database, String collection,Document doc)
Inserta un documento
  • Integer unknownReplaceOne(String database, String collection, Bson builder, Document docUpdate)
Actualiza un solo Documento en base a una condición de filtro,
  • Boolean unknownDelete(String database, String collection, Document doc)
Elimina un documento en base a un Document()
  • Boolean unknownDelete(String database, String collection, Bson builder)
Elimina un documento en base a un Bson
  • Boolean unknownDeleteAll(String database, String collection)
Elimina todos los documentos de la base de datos
  • Boolean unknownDeleteMany(String database, String collection, Document doc)
Elimina múltiples documentos con la condición establecida. Boolean unknownDeleteMany(String database, String collection, Bson builder) 
  • 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")
}



Comments

Popular posts from this blog

Primefaces v13

 La versión nueva de primefaces v13.0 elimina el componente <p:repeat>  Consulte los cambios en  https://github.com/primefaces/primefaces/releases/tag/13.0.0 por lo tanto si necesita una solución similar considere utilizar  <p:carousel>  o  <ui:repeat> En la versión 13 genera una excepción

Jmoordb-Core @UpdateMany y @DeleteMany

 Jmoordb-Core @UpdateMany y @DeleteMany Estoy trabajando en una versión nueva de jmoordb-core en la cual se estará implementando nuevas funcionalidades como lo son @DeleteMany y    @UpdateMany con la finalidad de hacer operaciones sobre múltiples documentos de la colección.