Skip to content

Get Object Count

The Object Count API provides a way to obtain the following values from the server:

  • Number of objects in a table
  • Number of objects matching query
  • Number of related objects

Non-Blocking API

// get object count for all objects in the table
public void Backendless.Data.of( "TABLE-NAME" ).getObjectCount( 
                                                AsyncCallback<Integer> callback );

// get object count for all objects in the table which match the query
public void Backendless.Data.of( "TABLE-NAME" ).getObjectCount( 
                                                DataQueryBuilder queryBuilder,
                                                AsyncCallback<Integer> callback );
// get object count for all objects in the table
public void Backendless.Data.of( E ).getObjectCount( AsyncCallback<Integer> callback );

// get object count for all objects in the table which match the query
public void Backendless.Data.of( E ).getObjectCount( DataQueryBuilder queryBuilder,
                                                     AsyncCallback<Integer> callback );

Blocking API

// get object count for all objects in the table
public int Backendless.Data.of( "TABLE-NAME" ).getObjectCount();

// get object count for all objects in the table which match the query
public int Backendless.Data.of( "TABLE-NAME" ).getObjectCount( DataQueryBuilder queryBuilder );
// get object count for all objects in the table
public int Backendless.Data.of( E ).getObjectCount();

// get object count for all objects in the table which match the query
public int Backendless.Data.of( E ).getObjectCount( DataQueryBuilder queryBuilder );

where:

Argument                Description
TABLE-NAME Name of the table where to calculate the object count.
E Java class of the data object which identifies the table where to calculate the object count.
queryBuilder Instance of com.backendless.persistence.DataQueryBuilder. When present in the arguments, the object must contain a whereClause query. The query is used by the server to identify a collection of objects.
callback a callback object which will receive a callback when the method successfully calculates the object count. Applies to the asynchronous method only.

Return Value

The synchronous methods returns an integer value which is the object count. A asynchronous call receives a callback with the object count value.

Example

Total object count for a table

The following sample request retrieves total number of objects in table Order:

Backendless.Data.of( "Order" ).getObjectCount( new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "total objects in the Order table - " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP", "error - " + backendlessFault.getMessage() );
  }
} );
Backendless.Data.of( Order.class ).getObjectCount( new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "total objects in the Order table - " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP", "error - " + backendlessFault.getMessage() );
  }
} );

Object count for a query

The following sample request retrieves total number of objects in table Order which satisfy the condition of orderAmount > 100:

DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause( "orderAmount > 100" );
Backendless.Data.of( "Order" ).getObjectCount( queryBuilder,
                                               new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "found objects " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP, "error - " + backendlessFault.getMessage() );
  }
} );
DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause( "orderAmount > 100" );
Backendless.Data.of( Order.class ).getObjectCount( queryBuilder,
                                                   new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "found objects " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP, "error - " + backendlessFault.getMessage() );
  }
} );

The following sample request retrieves total number of related "child" objects for a parent object. The parent table is Person. It contains a relation column called address pointing to the Addresstable. The query below retrieves a count of related child objects for a parent object with objectID of XXXX-XXXX-XXXX-XXXX. The whereClause query syntax for this scenario is:

Person[address].objectId = 'XXXX-XXXX-XXXX-XXXX'

DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause( "Person[address].objectId = 'XXXX-XXXX-XXXX-XXXX'" );
Backendless.Data.of( "Address" ).getObjectCount( queryBuilder,
                                                 new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "found objects " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP, "error - " + backendlessFault.getMessage() );
  }
} );
DataQueryBuilder queryBuilder = DataQueryBuilder.create();
queryBuilder.setWhereClause( "Person[address].objectId = 'XXXX-XXXX-XXXX-XXXX'" );
Backendless.Data.of( Address.class ).getObjectCount( queryBuilder,
                                                   new AsyncCallback<Integer>()
{
  @Override
  public void handleResponse( Integer integer )
  {
    Log.i( "MYAPP", "found objects " + integer );
  }

  @Override
  public void handleFault( BackendlessFault backendlessFault )
  {
    Log.i( "MYAPP, "error - " + backendlessFault.getMessage() );
  }
} );