Tuesday, January 23, 2024

How to implement server side paging query in ArangoDB database


 

While reading data from arangodb database if you have large dataset returned from your query result you will be unable to read data from arangodb. In this case you have to use limit operation to limit results in you dataset.  The LIMIT operation allows you to reduce the number of results.

 

Syntax: Two general forms of LIMIT are:

LIMIT count
LIMIT offset, count

 

Example query:

For a1 IN Asset_Envelop
 FILTER a1.updatedDate<@a1_updatedDate
 LIMIT 0, 100
 RETURN {"assetid":a1.`assetId`, "assetcategorylevel2":a1.`assetCategoryLevel2`, "assetcategorylevel3":a1.`assetCategoryLevel3`, "modelid":a1.`modelId`, "serialno":a1.`serialNo`, "manufacturer":a1.`

manufacturer`, "assetcategorylevel4":a1.`assetCategoryLevel4`, "locationid":a1.`locationId`, "thirdpartyid":a1.`thirdPartyId`, "measureid":a1.`measureId`, "inventoryyear":a1.`inventoryYear`, "manufacturedate":a1.`manufactureDate`, "location":a1.`location`, "count":a1.`count`, "sizelength":a1.`sizeLength`, "sizewidth":a1.`sizeWidth`, "sizeunit":a1.`sizeUnit`, "installdate":a1.`installDate`, "assetstatus":a1.`assetStatus`, "assetcondition":a1.`assetCondition`, "assetname":a1.`assetName`, "assetmaterial":a1.`assetMaterial`, "insulationlocation":a1.`insulationLocation`, "insulationtype":a1.`insulationType`, "insulationcondition":a1.`insulationCondition`, "glazingtype":a1.`glazingType`, "caulkingtype":a1.`caulkingType`, "caulkingcondition":a1.`caulkingCondition`, "weatherstrippingtype":a1.`weatherstrippingType`, "weatherstrippingcondition":a1.`weatherstrippingCondition`, "frametype":a1.`frameType`, "framecondition":a1.`frameCondition`, "additionalconditioncomments":a1.`additionalConditionComments`, "warranty":a1.`warranty`, "warrantystartdate":a1.`warrantyStartDate`, "warrantyenddate":a1.`warrantyEndDate`, "did":a1.`did`}

 

For a1 IN Asset_Envelop
 FILTER a1.updatedDate<@a1_updatedDate
 LIMIT 200, 100
 RETURN {"assetid":a1.`assetId`, "assetcategorylevel2":a1.`assetCategoryLevel2`, "assetcategorylevel3":a1.`assetCategoryLevel3`, "modelid":a1.`modelId`, "serialno":a1.`serialNo`, "manufacturer":a1.`

manufacturer`, "assetcategorylevel4":a1.`assetCategoryLevel4`, "locationid":a1.`locationId`, "thirdpartyid":a1.`thirdPartyId`, "measureid":a1.`measureId`, "inventoryyear":a1.`inventoryYear`, "manufacturedate":a1.`manufactureDate`, "location":a1.`location`, "count":a1.`count`, "sizelength":a1.`sizeLength`, "sizewidth":a1.`sizeWidth`, "sizeunit":a1.`sizeUnit`, "installdate":a1.`installDate`, "assetstatus":a1.`assetStatus`, "assetcondition":a1.`assetCondition`, "assetname":a1.`assetName`, "assetmaterial":a1.`assetMaterial`, "insulationlocation":a1.`insulationLocation`, "insulationtype":a1.`insulationType`, "insulationcondition":a1.`insulationCondition`, "glazingtype":a1.`glazingType`, "caulkingtype":a1.`caulkingType`, "caulkingcondition":a1.`caulkingCondition`, "weatherstrippingtype":a1.`weatherstrippingType`, "weatherstrippingcondition":a1.`weatherstrippingCondition`, "frametype":a1.`frameType`, "framecondition":a1.`frameCondition`, "additionalconditioncomments":a1.`additionalConditionComments`, "warranty":a1.`warranty`, "warrantystartdate":a1.`warrantyStartDate`, "warrantyenddate":a1.`warrantyEndDate`, "did":a1.`did`}

 

 The query performs paged query on database and returns limited results which works fine with large dataset also.