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

Hasura嵌套对象过滤:满足单个交易条件的用户是否会被统计?

Hasura嵌套对象过滤结果说明

当使用Hasura基于嵌套对象进行过滤时,只要父对象关联的嵌套对象中至少有一个满足过滤条件,对应的父对象就会被纳入结果集。

针对你提供的GraphQL查询:

query GetUsersAndRevenues {
  User_aggregate(
    where: {
      transactions: {timestamp: {_gte: 1743465600, _lte: 1751328000}}
    }
  ) {
    aggregate {
      count(columns: [address], distinct: true)
    }
  }
}

Hasura会返回选项1的结果:拥有至少一笔交易的timestamp处于指定时间范围内的User实体统计数。

逻辑说明

这种过滤逻辑等价于SQL中的EXISTS子查询:只要某个用户存在任意一条交易记录的时间戳落在指定区间内,该用户就会被统计。如果需要统计“所有交易的时间戳都处于指定范围”的用户,需要调整过滤条件(比如用_not排除存在不符合时间范围交易的用户)。

对应的GraphQL Schema:

type User @entity(immutable: false) {
  id: ID!
  address: Bytes!
  chainId: BigInt!
  isOnlyAirdropClaimer: Boolean!
  transactions: [UserTransaction!]! @derivedFrom(field: "user")
}

type UserTransaction @entity(immutable: true) {
  id: ID!
  block: BigInt!
  fee: Float!
  hash: Bytes!
  isAirdropClaim: Boolean!
  timestamp: BigInt!
  user: User!
}

内容的提问来源于stack exchange,提问作者Paul Razvan Berg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:35:14