You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyperledger Composer嵌套资产查询:编写特定Transact实例查询语句

Hyperledger Composer 查询:筛选关联特定Asset1的Transact实例

我来帮你搞定这个查询需求!要筛选出关联符合条件的Asset1的Transact实例,咱们可以利用Hyperledger Composer查询语言的关联路径访问特性来实现,下面分几种常见场景给你具体的查询示例:

1. 基础场景:关联的Asset1满足简单属性条件

比如你要找关联的Asset1的Asset1Id等于某个特定值(比如'ASS1')的Transact实例,查询语句可以这么写:

query findTransactsByAsset1Id {
  description: "找到关联指定Asset1Id的Transact实例"
  statement:
    SELECT org.acme.biznet.Transact
    WHERE (asset1.Asset1Id == 'ASS1')
}

这里的核心是通过asset1.Asset1Id直接访问Transact关联的Asset1的属性——因为你的Transact定义里有指向Asset1的关联字段asset1,所以可以直接通过这个路径嵌套访问。

2. 进阶场景:关联的Asset1包含特定Asset2

如果你的条件是Asset1的contents数组里包含某个指定的Asset2(比如Asset2Id为'ASS2'),可以使用CONTAINS关键字来检查数组元素:

query findTransactsByAsset1Contents {
  description: "找到关联的Asset1包含指定Asset2的Transact实例"
  statement:
    SELECT org.acme.biznet.Transact
    WHERE (asset1.contents CONTAINS (Asset2Id == 'ASS2'))
}

CONTAINS会遍历Asset1的contents数组,判断是否存在符合条件的Asset2元素。

3. 组合条件查询

如果需要同时满足多个条件(比如Asset1的ID是指定值,且其contents包含某个Asset2),直接用AND连接多个条件即可:

query findTransactsByCombinedConditions {
  description: "找到符合组合条件的Transact实例"
  statement:
    SELECT org.acme.biznet.Transact
    WHERE (asset1.Asset1Id == 'ASS1') AND (asset1.contents CONTAINS (Asset2Id == 'ASS2'))
}

小提示

这些查询需要放在你的Composer项目的.qry文件中,部署业务网络后,就可以通过Composer CLI或者API来调用啦。记得要保证查询里的字段名(比如asset1、contents、Asset1Id)和你定义的资产/交易字段完全一致,大小写也不能出错哦!

内容的提问来源于stack exchange,提问作者CoderTillDeath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:25:04