OrAgg¶
OrAgg 聚合值变量 (OrAgg) 维护对所有布尔类型的输入进行逻辑OR运算的结果。
声明语法¶
- or_agg_declaration
or_agg_declaration ::=
'NODE'? 'VALUE' aggregator_value_variable 'OrAgg' '=' value_expression
关于声明语法中参数的详细信息,请参见参数。
初始值¶
从声明语法中可见,声明时必须指定初始值。
输入类型与支持的操作¶
输入类型必须为布尔类型。
支持赋值与聚合操作:
- 赋值操作(
=):此操作重置聚合值变量的值。例如,SET @or_agg = true将聚合值变量or_agg的值清空并设置为true。此时,结果为true。 - 聚合操作(
+=):此操作对聚合值变量的值与输入值执行逻辑OR运算,并用结果更新聚合值变量。例如,如果or_agg的值为true,执行SET @or_agg += false将其值更改为true(因为true OR false等于true)。
返回类型¶
OrAgg -> BOOLEAN
返回类型始终为BOOLEAN。
示例¶
以下示例基于 CREATE TEMPORARY GRAPH 中创建的临时图#movie_temporary_graph。
全局 OrAgg 聚合值变量¶
'''
USE #movie_temporary_graph {
VALUE global_or OrAgg = true
// 聚合:true OR true -> 结果仍为 true
SET @global_or += true
// 聚合:true OR false -> 结果仍为 true
SET @global_or += false
// 聚合:false OR true -> 结果保持为 true
SET @global_or += true
LOG_INFO("@global_or: ", @global_or)
// 赋值:直接将变量重置为 false
SET @global_or = false
LOG_INFO("@global_or: ", @global_or)
}
'''
返回:
Log:
2025-08-22T03:10:51.651099 INFO - @global_or: true
2025-08-22T03:10:51.651645 INFO - @global_or: false
点绑定 OrAgg 聚合值变量¶
'''
USE #movie_temporary_graph {
NODE VALUE node_or OrAgg = false
MATCH (a@User WHERE a.id in [3,4])-[]->(b@Movie)
PER PATH {
// 对于每个用户,与条件 (b.id > 100) 进行逻辑 OR 运算
// 如果用户看过的任何电影的 ID 大于 100,则聚合器变为 true
SET a.@node_or += (b.id > 100)
}
PER NODE (a) {
LOG_INFO("a.id: ",a.id, " a.@node_or: ",a.@node_or)
}
}
'''
返回:
Log:
2025-08-22T03:32:20.042216 INFO - a.id: 4 a.@node_or: true
2025-08-22T03:32:20.042216 INFO - a.id: 3 a.@node_or: true