Hyperledger Composer Query Language
Queries in Hyperledger Composer are written in a bespoke query language. Queries are defined in a single query file called (queries.qry) within a business network definition.
Query Syntax
All queries must contain the description and statement properties.
Description
The description property is a string which describes the function of the query. It must be included but can contain anything.
Statement
The statement property contains the defining rules of the query, and can have the following operators:
SELECTis a mandatory operator, and by default defines the registry and asset or participant type that is to be returned.FROMis an optional operator which defines a different registry to query.WHEREis an optional operator which defines the conditions to be applied to the registry data.ANDis an optional operator which defines additional conditions.ORis an optional operator which defines alternative conditions.CONTAINSis an optional operator that defines conditions for array valuesORDER BYis an optional operator which defines the sorting or results.SKIPis an optional operator which defines the number of results to skip.LIMITis an optional operator which defines the maximum number of results to return from a query, by default limit is set at 25.
Example Query
This query returns all drivers from the default registry whose age is less than the supplied parameter or whose firstName is "Dan", as long as their lastName is not "Selman".
In practical terms, this query returns all drivers who do not have the lastName "Selman", as long as they are under a defined age, or have the firstName Dan, and orders the results by lastName ascending and firstName descending.
query Q20{
description: "Select all drivers younger than the supplied age parameter or who are named Dan and whose lastName is not Selman, ordered by lastname, firstname"
statement:
SELECT org.acme.Driver
WHERE ((age < _$ageParam OR firstName == 'Dan') AND (lastName != 'Selman'))
ORDER BY [lastName ASC, firstName DESC]
}
Parameters in queries
Queries can be written with undefined parameters that must be supplied when running the query. For example, the following query returns all drivers where the age property is greater than the supplied parameter:
query Q17 {
description: "Select all drivers aged older than PARAM"
statement:
SELECT org.acme.Driver
WHERE (_$ageParam < age)
}