这是我的场景(使用完全虚构的应用程序):
contact
。这是来自的人将赢得胜利者。此时,我想将此新用户连接到Joe创建的现有contact
(基于电子邮件地址),并允许用户在需要时更新联系信息。另一个问题是该用户可能已经注册了与不同公司的竞赛,因此可能有N contact
个对象我现在想要合并到用户拥有的单个联系人对象中。
以下是我在Cypher中描述的模型(由不同的人创建的2个联系人,_3和_6,然后用匹配的电子邮件创建用户,_1):
CREATE (_1:User { email:"john@bar.com", name:"Jack" }),
(_2:Phone { no:"555-5555" }),
(_3:Contact { name:"John", email:"john@bar.com" }),
(_4:User { email:"david@bar.com",name:"David" }),
(_5:Phone { no:"555-5555" }),
(_6:Contact { name:"John", email:"john@bar.com" }),
(_7:User { email:"fred@bar.com",name:"Fred" }),
_3-[:primary_phone]->_2,
_6-[:primary_phone]->_5,
_4-[:created]->_3,
_7-[:created]->_6
有关处理这种情况的最佳方法的任何想法?我试图弄清楚大卫和弗雷德如何知道他们创造的contact
,因为约翰实际上想要被称为杰克。
我应该删除contact
个节点并将所有关系移动到新创建的user
节点吗?我应该只添加user
节点与所有现有contact
节点之间的关系吗?
创建用户后,所有未来的关系将直接发送给用户。我只需要支持即使指定的用户尚未注册(或从未注册)仍然需要工作的场景。
谢谢!
答案 0 :(得分:1)
我现在要去寻找新的关系SAME_AS:http://console.neo4j.org/r/iangl3
我应该删除联系节点并将所有关系移动到 新创建的用户节点?我应该只是添加一个关系 用户节点到所有现有的联系节点?
我会选择最后一个 - 您应该从用户节点添加所有现有联系节点的关系。这样您就不会失去用户联系人列表中别名的价值,然后您可以让用户选择将自己的联系人命名为他们喜欢的内容。
答案 1 :(得分:0)
当电话节点可能只是一个User
和一个Contact
节点,电话信息存储为属性时,似乎电话节点不必要地复杂化。这样您就不必担心为每个联系人更新多个记录。
你的约翰> Jack场景应该作为Contact
节点上的note属性处理。