# Filters

| Property  | Description                                     | Type usage                                                                                                                                                                                             |
| --------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `$gt`     | is greater than                                 | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)                                                                                                      |
| `$gte`    | is greater than or equal to                     | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)                                                                                                      |
| `$lt`     | is less than                                    | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)                                                                                                      |
| `$lte`    | is less than or equal to                        | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)                                                                                                      |
| `$eq`     | is equal to                                     | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) |
| `$ne`     | is not equal to                                 | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number) \| [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String) |
| `$in`     | is included in                                  | [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)   |
| `$nin`    | is not included in                              | [Array](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) \| [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)   |
| `$exists` | is defined                                      | Any                                                                                                                                                                                                    |
| `$regex`  | is a regular expression                         | [String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)                                                                                                      |
| `$limit`  | Limit how much data will come out in the result | [Number](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number)                                                                                                      |

To use, just create an object, its key will be the value that we will apply the filters

**\<key>: {**\
&#x20;   **$filter: value**\
**}**

```javascript
Teacher.find({
  age: {
    $gte: 20
  },
  score: {
    $gte: 5
  }
})
```

#### Output

```json5
[
  {
    _id: '628c075c147b594cc84b',
    id_students: [ 123, 1234 ],
    score: 10,
    age: 20
  },
  {
    _id: '628c075c147b594cc8ac0a4b',
    id_students: [ 1234, 123 ],
    score: 5,
    age: 20
  }
]
```

### [Reference](https://lenn.gitbook.io/db-local/methods/find/references) with filter

The filter can be applied inside finds with references

```javascript
Teacher.find({
  age: 20,
  tb_students: {
    $ref: "Students",
    $id: "$data.id_students",
    age: { $gte: 6, $lte: 10 }
  }
})
```

### Full example

```javascript
Teacher.find({
  $limit: 2,
  score: {
    $gte: 5
  },
  tb_students: {
    $ref: "Students",
    $id: "$data.id_students",
    age: { $gte: 6, $lte: 10 }
  }
});
```
