创建节点并添加属性
"MERGE (p:reason {name: '刘能'}) RETURN p"
创建关系
"match (p),(b) " \
"where p.name='刘能' and b.name='赵四'" \
"create(p)-[r:‘friend’]->(b) return r"
实体模糊查询
# 查询带刘相关的实体并返回实体名称
"MATCH (n) WHERE n.name=~'.*刘.*' return n.name"
一级目录查询
"match(n)-[r]-(m) where n.name='刘能' return m,n,r"
根据实体实现双向延伸
"match (na)<-[re]->(nb) where na.name = '赵四' return na,nb,re"
根据实体实现向外延伸
"match (na)-[re]->(nb) where na.name = '赵四' return na,nb,re"
根据实体实现向内指向
"match (na)<-[re]-(nb) where na.name = '赵四' return na,nb,re"
根据实体名称和深度(层数)进行关系检索
# 最短路径
"match data=shortestpath((na)-[*1..]->(nb)) where na.name='刘能' and nb.name='赵四' return data"
# 找出两个节点深度为2的所有关系
"match (n)-[*]-(m) where n.name='刘能'and m.name='赵四' return (n)-[*]-(m) as p"
关系过滤
# 实体关系进行过滤
"MATCH p=()-[r:'friend']-() RETURN p,r"
多层级查询
修改方向直接修改语句中的箭头即可
match (n),(m0),(m1),(m2),data=(n:person)-[re:朋友]->(m0:person)-[re0:爱看的书]->(m1:book)-[re1:作者]->(m2:person) where n.name='赵四' return data
注:return的数据根据自己所需数据情况返回!
创建索引
create index on:变量类型名称(属性名称);
create index on:Disease(name);
删除索引
drop index on:变量类型名称(属性名称);
drop index on:Disease(name);
查看索引
call db.insexes
查看两节点之间经过哪个点
MATCH A -- C -- B WHERE id(A)=123 AND id(B)=234 RETURN C