在neo4j中匹配具有多个属性的节点

时间:2014-11-19 14:57:48

标签: neo4j cypher

我遇到了当前数据模型的麻烦,并且想知道是否有人可以建议更好的方法来构建我的数据。 我标记为'Person'的节点有5-10个属性,如:姓名,地址,国籍,电话,年龄......并且没有可用作索引的唯一属性。

由于我不想复制,每次创建新人时我使用的是MERGE而不是CREATE。但问题是,如果我在节点上匹配5-10个属性,那么做一个MERGE会大大减慢查询速度。

那么将每个Person节点中的属性取出作为标记为Address,Ethnic,Phone,Age的单独节点有助于我的MERGE查询的性能?还有其他可能的解决方案吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

如何为每个人生成唯一的GUID / UUID,并将其用作每个人的ID?然后你可以快速合并该属性并使用ON CREATE来设置其他属性,例如。

MERGE (p:Person {id: 'abcd-efgh-...'})
ON CREATE SET p.name = "mark", p.address = "..."

如果没有,那么可能是所有这些属性的哈希或组合作为你的密钥,例如。

MERGE (p:Person {id: "name-address-nationality-phone"})
ON CREATE SET p.name = "...", p.address =  "..."