Filtering Data

PulsePI allows you to apply powerful filters to your data queries using the filters array inside the params object.

How Filters Work

  • filters must be an array of objects
  • Each object is a filter condition: { fieldName: value }
  • You can use MongoDB-style operators (e.g., $gt, $lt, $in) for advanced filtering
  • Multiple filter objects are treated as AND conditions

Filter by Exact Match

Request Example

json
{
  "module": "user",
  "action": "list",
  "params": {
    "_fields": ["name", "age"],
    "filters": [
      { "age": 20 }
    ]
  }
}

➡️ This filters users where age === 20 and returns only name and age.

Response Example

json
{
  "status": "success",
  "data": [
    {
      "_id": "6800fa432df5c382263faee5",
      "name": "Jhon",
      "age": 20
    },
    {
      "_id": "6800fa712df5c382263faee9",
      "name": "Jane",
      "age": 20
    },
    {
      "_id": "6800fa752df5c382263faeeb",
      "name": "Ali",
      "age": 20
    }
  ],
  "meta": {
    "executedAt": "2025-04-18T23:31:26.691Z"
  }
}

Filter by Comparison Operator

Request Example

json
{
  "module": "user",
  "action": "list",
  "params": {
    "_fields": ["name", "age"],
    "filters": [
      { "age": { "$gt": 20 } }
    ]
  }
}

➡️ This returns users whose age > 20.

Supported Filter Operators

OperatorDescriptionExample
$gtGreater than{ "age": { "$gt": 25 } }
$ltLess than{ "age": { "$lt": 30 } }
$gteGreater than or equal to{ "age": { "$gte": 18 } }
$lteLess than or equal to{ "age": { "$lte": 60 } }
$eqEqual{ "role": { "$eq": "admin" } }
$neNot equal{ "role": { "$ne": "guest" } }
$inValue is in array{ "status": { "$in": ["active", "new"] } }

Combining Multiple Filters

Multiple filter objects in the filters array are combined with AND logic:

json
{
  "module": "user",
  "action": "list",
  "params": {
    "filters": [
      { "age": { "$gt": 20 } },
      { "role": "admin" }
    ]
  }
}

➡️ This returns users whose age > 20 AND role === "admin".