Some brainCloud APIs take a JSON formatted MongoDB-style where  clause as a parameter. These allow you to perform more complex queries on data to get specific results.

There are several query operators often used for querying data inside searchCriteria or where fields through some brainCloud API requests, especially for get a list of data from *page or *list APIs call (i.e. SysGetEntityPage,  GetPage, GetList etc.), such as comparison query operators ( e.g. $eq , $gt , $gte  ,$lt , $lte ) and evaluation query operators (e.g. $regex , $in ). These operators give users a possibility to get expect data quickly and easily.

This article provides some example of the basics of using $regex , $in with a couple of brainCloud APIs.

Entity->Getpage(), searching with $regex -- to find all entities with entityId includes ea :

{
  "context": {
    "pagination": {
      "rowsPerPage": 50,
      "pageNumber": 1
    },
    "searchCriteria": {
      "entityId": {"$regex": ".*ea.*"}
    },
    "sortCriteria": {
      "createdAt": 1,
      "updatedAt": -1
    }
  }
}

Get the result as expected:

User->SysGetPage(), expression $regex  with $options -- i  to turn case-insensitivity on:

{
  "context": {
    "pagination": {
      "rowsPerPage": 50,
      "pageNumber": 1
    },
    "searchCriteria": {
      "playerName": {
        "$regex": "^h", "$options": "i"
      }
    },
    "sortCriteria": {
      "playerName": 1
    },
    "collationCriteria": {
      "locale": "en",
      "strength": 1
    }
  }
}

so, you will get a result with playerName start with H or h: 

CutomEntity->SysGetEntityPage(), operator $in is used in this request example:

{
  "entityType": "athletes",
  "context": {
    "pagination": {
      "rowsPerPage": 50,
      "pageNumber": 1
    },
    "searchCriteria": {
      "data.position": {"$in":["defense","forward"]}
    },
    "sortCriteria": {
      "createdAt": 1
    }
  }
}

this request will return all the entities with position is defense or forward :

Did this answer your question?