neo4j:表示对象属性,而不是对象之间链接中的关系
我想使用neo4j来表示网络,以便制作像这样的漂亮图形: 以下是迄今为止使用的代码:neo4j:表示对象属性,而不是对象之间链接中的关系,neo4j,cypher,Neo4j,Cypher,我想使用neo4j来表示网络,以便制作像这样的漂亮图形: 以下是迄今为止使用的代码: CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'}) CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'}) CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'}) CREA
CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
(router1)-[:CONNECTED_TO {}]->(network1),
(network1)-[:CONNECTED_TO {}]->(server1),
(network1)-[:CONNECTED_TO {}]->(server2)
WITH router1 AS r
MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;
是否有方法表示路由器和网络之间使用的子网,以及服务器和相关网络之间链路上的服务器ip,而不是连接到的适当但无意义的
我试图将关系定义为:
CREATE (router1)-[:CONNECTED_TO {'192.168.123.0/24'}]->(network1)
or
CREATE (router1)-[:CONNECTED_TO {network1.cidr}]->(network1)
没有成功。有可能吗
非常感谢您的帮助[编辑]
每个属性都需要一个名称。例如,cidr
:
CREATE (router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1)
以下是完整的查询:
CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
(router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1),
(network1)-[:CONNECTED_TO {ip:'192.168.123.7'}]->(server1),
(network1)-[:CONNECTED_TO {ip:'192.168.123.9'}]->(server2)
WITH router1 AS r
MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;
但是,将此属性添加到关系中会导致将属性存储在两个位置——这可能是浪费,如果需要更改属性值,则需要额外的努力才能在多个位置执行更新。我建议只将属性放在一个地方,根据您所有用例的需要做出决定。谢谢您的回答,但它似乎不起作用;我将此用于gw_项目_路由器,作为g匹配p=(g)-[:连接到*]->(x),其中不(x)-[:连接到]->()返回p代码>作为查询查看我编辑的完整查询答案。这对我有用。你说得对:它有用。也许我一直在添加有属性和无属性的关系,这一事实让我无法为整个图形选择要显示的属性。非常感谢!