跳转至
开发版采用单机部署,无需产品 License 文件。需要多机部署或大规模性能测试? 了解企业版

AndAgg

AndAgg 聚合值变量 (AndAgg) 维护对所有布尔类型的输入进行逻辑AND运算的结果。

声明语法

and_agg_declaration
NODE VALUE aggregator_value_variable AndAgg = value_expression

and_agg_declaration ::=
    'NODE'? 'VALUE' aggregator_value_variable 'AndAgg' '=' value_expression

关于声明语法中参数的详细信息,请参见参数。

初始值

从声明语法中可见,声明时必须指定初始值。

输入类型与支持的操作

输入类型必须为布尔类型。

支持赋值与聚合操作:

  • 赋值操作(=):此操作重置聚合值变量的值。例如,SET @and_agg = true将聚合值变量and_agg的值清空并设置为true。此时,结果为true。
  • 聚合操作(+=):此操作对聚合值变量的值与输入值执行逻辑AND运算,并用结果更新聚合值变量。例如,如果and_agg的值为true,执行SET @and_agg += false将其值更改为false(因为true AND false等于false)。

返回类型

AndAgg -> BOOLEAN

返回类型始终为BOOLEAN。

示例

以下示例基于 CREATE TEMPORARY GRAPH 中创建的临时图#movie_temporary_graph。

全局 AndAgg 聚合值变量

'''
USE #movie_temporary_graph {
  VALUE global_and AndAgg = true

  // 聚合:true AND true -> 结果仍为 true
  SET @global_and += true

  // 聚合:true AND false -> 结果变为 false
  SET @global_and += false

  // 聚合:false AND true -> 结果保持为 false  
  SET @global_and += true

  LOG_INFO("@global_and: ", @global_and)

  // 赋值:直接将变量重置为 true
  SET @global_and = true

  LOG_INFO("@global_and: ", @global_and)
}
'''

返回:

Log:
2025-08-21T09:54:50.956839 INFO  - @global_and: false
2025-08-21T09:54:50.957806 INFO  - @global_and: true

点绑定 AndAgg 聚合值变量

'''
USE #movie_temporary_graph {
  NODE VALUE node_and AndAgg = true

  MATCH (a@User WHERE a.id in [3,4])-[]->(b@Movie)
  PER PATH {
    // 对于每个用户,与条件 (b.id > 100) 进行逻辑 AND 运算
    // 如果用户看过的任何电影的 ID 小于等于 100,则聚合器变为 false
    SET a.@node_and += (b.id > 100)
  }
  PER NODE (a) {
    LOG_INFO("a.id: ",a.id, " a.@node_and: ",a.@node_and)
  }
}
'''

返回:

Log:
2025-08-21T09:58:56.690844 INFO  - a.id: 4 a.@node_and: false
2025-08-21T09:58:56.690844 INFO  - a.id: 3 a.@node_and: true