创建节点
create(n: Teacher {name: "test”}) return n
查询关系
match (a:Teacher)-[:BORNIN]-> (b:Location {city: "beijing"}) return a,b
查询所有有对外关系的节点以及节点的类型
match (a:Teacher)-[r]->() return a.name, type(r)
创建的时候就建立联系
create (a:Teacher {name:"beibei"})-[:FRIENDS]->(b:Teacher {name: "test"})
查找关系的关系
match(a:Teacher {name: "test"})-[r1:FRIENDS]-()-[R2:FRIENDS]-(relatedfriend) return relatedfriend.name as fofriend
修改属性的方法:
match (a:Teacher {aname: "steven"}) set a.name="xiaobao"
删除 节点的方法
match (a:Teacher {aname: "steven"}) delete a
建立双向连接的方法
match (a:Teacher {name:"xiaohong"}), (b: Teacher {name: "xiaoming"}) merge (b)<-[:FRIENDS {since: 2023}]-(a)
match (a:Teacher {name:"xiaohong"}), (b: Teacher {name: "xiaoming"}) merge (b)-[:FRIENDS {since: 2023}]->(a)
查询的关相结合
MATCH p=(a:AIW_APPLICATION)-[r1:APP_MODULE]->(b:AIW_MODULE) WHERE a.applicationCode = 'aaa' RETURN p
UNION ALL
MATCH p=(a:AIW_APPLICATION)-[r2:APP_INSTANCE]->(c:AIW_INSTANCE) WHERE a.applicationCode = 'aaa' RETURN p
UNION ALL
MATCH p=(a:AIW_APPLICATION)-[r3:APP_BUSINESS_SERVICE]->(c:AIW_RRP) WHERE a.applicationCode = 'aaa' RETURN p
;
查询关系的节点来自于哪个label
MATCH p=(startNode)-[r:APP_INBOUND]->(endNode) RETURN labels(startNode), labels(endNode)
批量建关系的方法
MATCH (edge:INBOUND_EDGE), (node1:AIW_APPLICATION_COPY) , (node2:AIW_APPLICATION_COPY) where edge.sender=node1.applicationSaid and edge.applicationSaid=node1.applicationSaid
CREATE (node1)-[:APP_INBOUND_TEST]->(node2)
删除节点关系
MATCH (a)-[r:RELATION]->(b) DELETE r
查找有某种关系但是没有另一种关系的方法
MATCH p=(a:AIW_APPLICATION {applicationCode: 'bbb'})-[r:APP_IN_OUT]->(b:AIW_APPLICATION)
WHERE NOT (b)-[:APP_NETWORK_TRAFFIC]->()
RETURN p
导入csv文件创建label
LOAD CSV WITH HEADERS FROM "file:///aaa.csv" AS row
CREATE (a:AIW_APPLICATION {applicationSaid:row.application_said});
注意点: 关系前后两个节点之间的label名字不能相同
MATCH p=(a:AIW_APPLICATION_COPY {applicationSaid: "bbb"})-[r:APP_OUTBOUND_TEST]->(b:AIW_APPLICATION_COPY {applicationSaid: "aaa"})
RETURN p
LIMIT 25