# Busquedas con Helpers

Los Helpers tomados del concepto en MongoDB, permiten aplicar filtros a las búsquedas basados en predicados, lo que amplia las posibilidades de hacer consultas de todo tipo.

**Sintaxis:**

| Método                                                                                                                                      | Base datos NoSQL |
| ------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| public List\<T> helpers(String predicate, String key, Object value, Document... docSort)                                                    | MongoDB          |
| public List\<T> helpersPagination(String predicate, String key, Object value, Integer pageNumber, Integer rowsForPage, Document... docSort) |                  |
| public List\<T> findHelperSort(String predicate, Document doc, String key, String value)                                                    |                  |
| public List\<T> findHelperSortPagination(String predicate, Document doc, String key, String value, Integer pageNumber, Integer rowsForPage) |                  |

```
```

**Parámetros:**

* Object key: es la clave
* String value: El valor a buscar
* Document... doctSort es el documento de ordenación que es opcional

### **Predicados Igualdad**

| Predicado | Descripción |
| --------- | ----------- |
| eq        | igual       |
| lt        | menor       |
| gt        | mayor       |

### Predicados de Ordenación

| Predicado  | Descripción |
| ---------- | ----------- |
| ascending  | ascendente  |
| descending | descendente |

### Predicados Lógicos

| Predicado | Descripción |
| --------- | ----------- |
| and       | y           |
| or        | o           |

## Ejemplos:

### Predicados de igualdad

* **Busca que sean iguales Se puede ordenar el resultado**

```
list = paisesRepository.helpers("eq","pais","panama")
```

* **Buscar documento embebido**

```
list = paisesRepository.helpers("eq","provincias.provincia","Los Santos")
```

* **Busca la población menor de 200 ordenado por País**

```
list = paisesRepository.helpers("lt","poblacion", "200",new Document("pais",1));
```

### Predicados de ordenación

* **Busca y ordena ascendente**

```
list = paisesRepository.findHelperSort("ascending",new Document("pais","panama"),"idpais","pa");
```

* **Busca y ordena descendente**

```
list = paisesReository.findHelperSort("descending",new Document("pais","panama"),"idpais","pa");
```

### Predicados Lógicos

* **AND Busca el país con idpais = cu y el idcontiente = am sin ordenar**

```
list =paisesRepository.findBy(new Document("idpais", "cu").append("continentes.idcontinente","am") );
```

* **OR idpais igual a cu o idcontinente igual a 5 ordenado por pais**

```
list = paisesRepository.findBy(new Document( new Document("$or", asList(new Document("idpais", "cu"),    
new Document("continentes.idcontinente", "am")))), new Document(“pais”,1));
```
