Skip to main content

Aplicar Filter en un List MongoDB + ejbmoordb

A veces necesitamos hacer filtros complejos sobre un List<>, continuamos con el blog anterior .
Buscar elemento en un List<> Embebido/Referenciado/MongoDB + ejbjmooordb
donde definĆ­amos los entitys, controller y paginas java server faces. Ahora implementaremos los filtros para buscar un determinado usuario que puede estar en la posicion 1 o 2 del List,



Deseamos filtrar en List<Usuario>, el encargado de tienda si observamos para algunas condiciones del subtipoorden, este estarÔ en la posición 2 y para otras condiciones del subtipo de orden lo encontraremos en la posición 1.




Tendremos que crear un filtro complejo en el cual para obtener el usuario.#.username puede ser 1 o 2 dependiendo de las condiciones :;
posición subtipoorden
2                 tiendaabodega
2bodegaatienda
2bodegaainterno
2internoabodega
1tiendaainterno
1iternoatienda

En este caso lo encontramos en la posición 1 al encargado de tienda ya que subtipoorden="tiendaainterno"


En el caso que el sutipoorden=""tiendaabodega" el encargado de tienda estara en la posiciòn 2:



Creamos los filtros para que busque en la posición 2 o 1 en base al valor de subtipoorden.,

Imaginemos que usamos un <p:autocomplete> para hacer el filtro



   Bson filter_1 =Filters.and(Filters.eq("usuario.2.username",encargadotienda.getUsername()),
                                         Filters.or(Filters.eq("subtipoorden","tiendaabodega"),
                                                        Filters.eq("subtipoorden","bodegaatienda"),
                                                        Filters.eq("subtipoorden","bodegaainterno"),
                                                        Filters.eq("subtipoorden","internoabodega")));

   Bson filter_2 =Filters.and(Filters.eq("usuario.1.username",encargadotienda.getUsername()),
                                             Filters.or(Filters.eq("subtipoorden","tiendaainterno"),
                                                        Filters.eq("subtipoorden","iternoatienda")));


  Bson filter =Filters.or(filter_1, filter_2);

  ordenList = ordenRepository.filtersPagination(filter, page, rowPage, new Document("idorden", -1));







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.