Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/and_agg/ Documentation version: v5.3.2 # AndAgg AndAgg 聚合值变量 (`AndAgg`) 维护对所有布尔类型的输入进行逻辑`AND`运算的结果。 ## 声明语法 语法图源码 and_agg_declaration ```` and_agg_declaration ::= 'NODE'? 'VALUE' aggregator_value_variable 'AndAgg' '=' value_expression ```` 关于声明语法中参数的详细信息,请参见[参数](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/agg/#_6)。 ## 初始值 从声明语法中可见,声明时必须指定初始值。 ## 输入类型与支持的操作 输入类型必须为布尔类型。 支持[赋值与聚合](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/set/)操作: - 赋值操作(`=`):此操作重置聚合值变量的值。例如,`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](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/) 中创建的临时图`#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 ````