我需要定义两个节点之间的关系。拥有公司和人员节点,公司节点具有名为id的属性,人员节点具有名为company_id的属性。
因此,当添加新的人员和公司时,我是否每次都需要创建关系。
在neo4j中是否有一个选项,预先定义公司的id,人们的company_id是要匹配的属性?,如果找到匹配,则每个新条目都会自动创建关系。
答案 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上使用类似外部侦听器的内容来触发运行该查询。