基于neo4j中节点属性的预定义关系

时间:2014-10-07 02:37:35

标签: neo4j relationships

我需要定义两个节点之间的关系。拥有公司和人员节点,公司节点具有名为id的属性,人员节点具有名为company_id的属性。

因此,当添加新的人员和公司时,我是否每次都需要创建关系。

在neo4j中是否有一个选项,预先定义公司的id,人们的company_id是要匹配的属性?,如果找到匹配,则每个新条目都会自动创建关系。

2 个答案:

答案 0 :(得分:3)

没有内置功能。<​​/ p>

事实是,在图形数据库中,关系正在取代“company_id”属性。

在应用程序级别,只要在数据库中添加人员节点,您就可以调整查询以创建关系

MERGE (p:People)-[:WORKS_AT]->(c:Company)

克里斯

答案 1 :(得分:3)

您可以像这样定期运行查询:

MATCH (p:Person)
WHERE has(p.company_id)
MATCH (c:Company {id:p.company_id})
MERGE (p)-[:WORKS_AT]->(c)
REMOVE p.company_id;

在服务器/内核扩展或嵌入式代码中,您还可以注册一个完全相同的tx-commit侦听器。

您还可以在GraphAware change-feed extension上使用类似外部侦听器的内容来触发运行该查询。