600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Cypher查询语言--Neo4j-WHERE(三)

Cypher查询语言--Neo4j-WHERE(三)

时间:2018-07-08 20:15:37

相关推荐

Cypher查询语言--Neo4j-WHERE(三)

目录

WhereBoolean 操作类型节点属性上的过滤正则表达式转义正则表达式不分大小些正则表达式关系类型上的过滤属性存在性如果缺失属性默认为true如果缺失属性默认为false空置null过滤关系过滤

Where

如果需要从查找的数据的图中过滤,可以在查询语句中添加where子句。

图:

Boolean 操作类型

可以使用boolean操作符and 和 or 或者也可以使用not()函数。

查询:

START n=node(3, 1)

WHERE (n.age < 30 and n.name = "Tobias") ornot(n.name = "Tobias")

RETURN n

返回节点。

结果:

节点属性上的过滤

查询:

START n=node(3, 1)

WHERE n.age < 30

RETURN n

结果:

正则表达式

可以通过使用=~ /regexp/来匹配正在表达式。如下:

查询:

START n=node(3, 1)

WHERE n.name =~ /Tob.*/

RETURN n

返回名叫Tobias的节点。

结果:

转义正则表达式

如果在正则表达式中需要有斜杠时可以通过转义实现。

查询:

START n=node(3, 1)

WHERE n.name =~ /Some\/thing/

RETURN n

没有匹配的节点返回。

结果:

不分大小些正则表达式

在正则表达式前加上?i,整个正则表达式将会忽略大小写。

查询:

START n=node(3, 1)

WHERE n.name =~ /(?i)ANDR.*/

RETURN n

属性name为Andres的节点将返回

结果:

关系类型上的过滤

可以match模式中通过添加具体的关系类型,但有时需要针对类型的更加高级的过滤。可以使用明确的type属性来对比,查询对关系类型名作一个正则比较。

查询:

START n=node(3)

MATCH (n)-[r]->()

WHERE type(r) =~ /K.*/

RETURN r

关系整个以K开始的类型名都将返回。

结果:

属性存在性

查询:

START n=node(3, 1)

WHERE n.belt

RETURN n

结果:

如果缺失属性默认为true

仅当属性存在时,比较一个图的元素的此属性,使用允许空属性的语法。

查询:

START n=node(3, 1)

WHERE n.belt? = 'white'

RETURN n

所有节点即使没有belt属性的 都将返回。此类比较返回为true。

结果:

如果缺失属性默认为false

需要在缺失属性时为false,即不想返回此属性不存在的节点时。使用感叹号。

查询:

START n=node(3, 1)

WHERE n.belt! = 'white'

RETURN n

结果:

空置null过滤

有时候需要测试值或者标识符是否为null。与sql类似使用 is null 或 not(is null x)也能起作用。

查询:

START a=node(1), b=node(3, 2)

MATCH a<-[r?]-b

WHERE r is null

RETURN b

Tobias节点没有链接上。

结果:

关系过滤

为过滤两点间基于关系的子图,在match子句中使用限制部分。可以描述带方向的关系和可能的类型。这些都是有效的表达:WHERE a-→b WHERE a←-b WHERE a←[:KNOWS]-bWHERE a-[:KNOWS]-b

查询:

START a=node(1), b=node(3, 2)

WHERE a<--b

RETURN b

Tobias节点没有链接

结果:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。