Hyperledger Composer中的查詢以定製查詢語言編寫。查詢queries.qry
在業務網絡定義中的一個稱爲()的查詢文件中定義。數組
全部查詢都必須包含description
和statement
屬性。網絡
該description
屬性是描述查詢功能的字符串。它必須包含但能夠包含任何東西。spa
該statement
屬性包含查詢的定義規則,而且能夠具備如下運算符:rest
SELECT
是強制性操做員,默認狀況下定義要返回的註冊表和資產或參與者類型。FROM
是一個可選運算符,它定義了一個不一樣的註冊表來進行查詢WHERE
是一個可選運算符,它定義了要應用於註冊表數據的條件。AND
是定義附加條件的可選運算符。OR
是可選運營商,它定義了替代條件。CONTAINS
是一個可選運算符,它定義數組值的條件ORDER BY
是定義排序或結果的可選運算符。SKIP
是一個可選運算符,用於定義要跳過的結果數量。LIMIT
是一個可選運算符,它定義了從查詢返回的最大結果數量,默認狀況下,極限值設置爲25。注:若是您使用Hyperledger fabricV1.1或如下時,LIMIT
和SKIP
將沒法正常工做,有路過的PARAMS到CouchDB的織物上的問題。參考Hyperledger Fabric問題:FAB-2809code
此查詢返回年齡小於所提供參數或 firstName爲「Dan」 的默認註冊表中的全部驅動程序,只要其姓氏不是「Selman」。實際上,這個查詢返回全部沒有姓氏「Selman」的驅動程序,只要它們在定義的年齡之下,或者具備firstName Dan,而且按lastName升序和firstName升序來命令結果。排序
query Q20{ description: "Select all drivers younger than the supplied age parameter or who are named Dan and whose lastName is not Selman, ordered from A-Z by firstName" statement: SELECT org.example.Driver WHERE ((age < _$ageParam OR firstName == 'Dan') AND (lastName != 'Selman')) ORDER BY [lastName ASC, firstName ASC] }
查詢能夠使用運行查詢時必須提供的未定義參數編寫。例如,如下查詢將返回age屬性大於提供的參數的全部驅動程序:ip
query Q17 { description: "Select all drivers aged older than PARAM" statement: SELECT org.example.Driver WHERE (_$ageParam < age) }
該CONTAINS
過濾器用於搜索節點中的數組字段。下面的查詢返回全部得到準時和穩定駕駛證的駕駛員。考慮到徽章在駕駛員參與者中是陣列類型的。字符串
query Q18 { description: "Select all drivers who has the following interests" statement: SELECT org.example.Driver WHERE (badges CONTAINS ['punctual', 'steady-driving']) }