主流图数据库Neo4j的知识大全,全网最新

1.主流图数据库对比

对比了3个主流开源图数据库:Neo4j/JanusGraph和HugeGraph的一些特性,共比较了30多个指标,包括生态、功能、性能、工具链等维度。

主流图数据库Neo4j的知识大全,全网最新_第1张图片

主流图数据库Neo4j的知识大全,全网最新_第2张图片

主流图数据库Neo4j的知识大全,全网最新_第3张图片

2.Cypher基本语法

2.1类型

Cypher支持的数据类型有:数值型、字符型、布尔型、节点、关系、路径、映射(map)和列表(list)。

2.2表达式

2.2.1Case表达式

2.2.1.1简单的case表达式

计算表达式的值,然后依次与 WHEN 语句中的表达式进行比较,直到匹配上为止。如果未匹配上,则ELSE中的表达式将作为结果。如果 ELSE 语句不存在,那么将返回 null。
语法:

CASE test
WHEN value THEN result
[WHEN ...]
[ELSE default]
END

参数:
test:一个有效的表达式。

value:一个表达式,它的结果将与 test表达式的结果进行比较。
result: 如果 value 表达式能够与 test表达式匹配,则它将作为结果表达式。
default:没有匹配的情况下的默认返回表达式。

查询:

MATCH (n)
RETURN
CASE n.eyes
WHEN 'blue'
THEN 1
WHEN 'brown'
THEN 2
ELSE 3 END AS result

结果:result:

2

1

3

2

1

5 rows

2.2.1.2 一般的case表达式

按顺序判断断言,直到找到 true 为止,然后对应的结果被返回。如果没有找到,就返回 ELSE的值。如果没有 ELSE 语句,则返回 null。
语法:

CASE
WHEN predicate THEN result
[WHEN ...]
[ELSE default]
END

参数:
predicate:判断的断言,以找到一个有效的可选项。

result:如果predicate 匹配到,result 就作为结果表达式。
default:没有匹配到情况下,默认返回表达式。
查询:

MATCH (n)
RETURN
CASE
WHEN n.eyes='blue'
THEN 1
WHEN n.age <40
THEN 2
ELSE 3 END AS result

结果: result:

2

1

3

3

1

5 rows
 

2.2.2参数

2.2.2.1字符串

参数:

{
"name":"Johan"
}

我们可以通过如下两种查询方式来使用参数
查询方式1:
 

MATCH (n)
WHERE n.name = "Johan"
RETURN n

查询方式2:

MATCH (n { name: "Johan" ))
RETURN n
2.2.2.2正则表达式

参数

{"regex”: ".*h.*"}

查询

MATCH (n)
WHERE n.name =~ ".*h.*"
RETURN n.name

在Neo4j的Cypher查询语言中,=~ 是用于执行正则表达式匹配的操作符。

=~ ".*h.*" 表示正则表达式的匹配模式。这个模式包含以下元素:

  • .*: 表示匹配零个或多个任意字符。
  • h: 表示匹配字母 "h"。

因此,.*h.* 表示匹配包含字母 "h" 的任意字符串。

2.2.2.3大小写敏感的字符串模式匹配

参数:

{"name": "Michaelw"}

查询:

MATCH (n)
WHERE n.name STARTS WITH "Michaelw"
RETURN n.name
2.2.2.4创建带有属性的节点

参数:

{"props":{"name":"Andres",
"position":"Developer"
}
}

查询:

create({"props":{"name":"Andres",
"position":"Developer"
}
})
2.2.2.5创建带有多个属性的多个节点

参数:

{"props":[{
"awesome": true,"name":"Andres"
"position":"Developer"
},{"children":3,"name": Michael","poaltion":"peveloper"}]

}

查询

UNWIND $ props As properties
CREATE (n:Peraon)
SET n = Propert1es
RETURN n
2.2.2.6设置节点的所有属性

参数:

{"props":{"name" :"Andres",
"position” :“Developer"}
}

查询:

MATCH (n)
WHERE n.name='Michaela'
SET n= $ props
2.2.2.7SKIP和LIMIT

参数:

{"s”:1
"l":1}

查询:

MATCH (n)
RETURN n.name
SKIP $s
LIMIT $l
2.2.2.8节点ID

参数:

{"id”:0}

查询:

MATCH (n)
WHERE id(n)= $id
return n.name
2.2.2.9多个节点ID

参数:

{"ids":[0,1,2 ]}

查询:

MATCH (n)
WHERE id(n) IN $ids
RETURN n.name

2.3注释

Cypher语言,用双斜线//来注释行

2.4列表

累了,先发出来,后边抽空再写。

未完待续。。。。。。。

你可能感兴趣的:(数据库)