neo4j 图像数据库

22 阅读1分钟

创建节点

 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