图数据库Neo4j

2020-03-25  本文已影响0人  sixfold_yuan

基本概念

图数据库组成结果

图查询语言Cypher

CREATE (ee:Person {name:"Emil", from:"Sweden", klout:99})

CREATE 创建数据
() 括号表示一个节点
ee:Person ee表示节点的变量名,Person表示节点的标签
{} 花括号中添加节点的属性

MATCH (ee:Person) WHERE ee.name="Emil" RETURN ee

MATCH 查找节点或关系
(ee:Person) 标签为Person的节点,变量名为ee
WHERE 限定结果
ee.name="Emil" name属性为Emil
RETURN 返回结果

MATCH (ee:Person) WHERE ee.name = "Emil"
CREATE (js:Person { name: "Johan", from: "Sweden", learn: "surfing" }),
(ir:Person { name: "Ian", from: "England", title: "author" }),
(rvb:Person { name: "Rik", from: "Belgium", pet: "Orval" }),
(ally:Person { name: "Allison", from: "California", hobby: "surfing" }),
(ee)-[:KNOWS {since: 2001}]->(js),(ee)-[:KNOWS {rating: 5}]->(ir),
(js)-[:KNOWS]->(ir),(js)-[:KNOWS]->(rvb),
(ir)-[:KNOWS]->(js),(ir)-[:KNOWS]->(ally),
(rvb)-[:KNOWS]->(ally)

避免创建重复数据MERGE

MERGE (mark:Person {name: 'Mark'})
RETURN mark

MATCH (j:Person {name: 'Jennifer'})
MATCH (m:Person {name: 'Mark'})
MERGE (j)-[r:IS_FRIENDS_WITH]->(m)
RETURN j, r, m
MATCH (ee:Person)-[:KNOWS]-(friends)
WHERE ee.name = "Emil" RETURN ee, friends
MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer

() 表示忽略的节点
DISTINCT 因为不止一个路径可以匹配该模式

PROFILE MATCH (js:Person)-[:KNOWS]-()-[:KNOWS]-(surfer)
WHERE js.name = "Johan" AND surfer.hobby = "surfing"
RETURN DISTINCT surfer
match (n)-[r]-(n1) delete n,r,n1
match (n) detach delete n
match (n) delete n

电影图

:play movie-graph

关系数据库--Neo4j

:play northwind-graph
LOAD CSV WITH HEADERS FROM  "xxx.csv" AS row
CREATE (n:Labeln)
SET n=row
n.xxx = toFloat(row.xxx)
n.yyy = toInteger(row.yyy)
n.bool = (row.bool<>'0')
CREATE INDEX ON :Labeln(LabelnID)
MATCH (p:Product),(c:Category)
WHERE p.categoryID = c.categoryID
CREATE (p)-[:PART_OF]->(c)
上一篇 下一篇

猜你喜欢

热点阅读