谓词函数
Nebula Graph支持以下谓词函数。
如果列表为空,或者列表中的所有元素都为空,则返回NULL。
在 openCypher 中只定义了函数exists()
,其他几个函数依赖于具体实现。
示例
nebula> RETURN any(n IN [1, 2, 3, 4, 5, NULL] \
WHERE n > 2) AS r;
+------+
| r |
+------+
| true |
+------+
nebula> RETURN single(n IN range(1, 5) \
WHERE n == 3) AS r;
+------+
| r |
+------+
| true |
+------+
nebula> RETURN none(n IN range(1, 3) \
WHERE n == 0) AS r;
+------+
| r |
+------+
| true |
nebula> WITH [1, 2, 3, 4, 5, NULL] AS a \
RETURN any(n IN a WHERE n > 2);
+-------------------------+
| any(n IN a WHERE (n>2)) |
+-------------------------+
| true |
+-------------------------+
nebula> MATCH p = (n:player{name:"LeBron James"})<-[:follow]-(m) \
RETURN nodes(p)[0].name AS n1, nodes(p)[1].name AS n2, \
all(n IN nodes(p) WHERE n.name NOT STARTS WITH "D") AS b;
+----------------+-------------------+-------+
| n1 | n2 | b |
+----------------+-------------------+-------+
| "LeBron James" | "Danny Green" | false |
| "LeBron James" | "Dejounte Murray" | false |
| "LeBron James" | "Chris Paul" | true |
| "LeBron James" | "Kyrie Irving" | true |
| "LeBron James" | "Carmelo Anthony" | true |
| "LeBron James" | "Dwyane Wade" | false |
nebula> MATCH p = (n:player{name:"LeBron James"})-[:follow]->(m) \
+------+
| b |
+------+
| true |
+------+
nebula> MATCH (n:player) \
RETURN exists(n.id), n IS NOT NULL;
+--------------+---------------+
| exists(n.id) | n IS NOT NULL |
+--------------+---------------+
| false | true |
+--------------+---------------+
...
nebula> MATCH (n:player) \
WHERE exists(n['name']) \
RETURN n;
+---------------------------------------------------------------+
| n |
+---------------------------------------------------------------+
| ("player105" :player{age: 31, name: "Danny Green"}) |
| ("player109" :player{age: 34, name: "Tiago Splitter"}) |
| ("player111" :player{age: 38, name: "David West"}) |