【发布时间】:2015-02-23 11:46:19
【问题描述】:
我有两个节点,A 和 B, A 与 B 对话,B 与 A 对话,(A)-[:talksTo]-(B)
A 对 B 有情感值,B 对 A 有情感值。
那么问题来了,我需要 A 到 B 关系来存储 B 到 A 关系也想要存储的值(相同的键)。
所以我会尝试做一些查询,例如 MATCH (A:person)-[:talksTo]-(B:person) where A.sentiment
所以这里 A 对 B 的情绪将不同于 B 对 A 的情绪,因此需要分离。
我尝试使用唯一的键名来指定方向 - 但这会使查询变得困难,除非我可以使用通配符 ex 进行查询:... where A.Asentiment
我能想到的另一种方法是制作两个不同的图表,1)A 与 B 图表对话,B 与 A 图表对话......但这会使查询变得棘手,因为我可能会返回多个节点单节点查询或者我是否必须将单节点键:值更新为其他内容。我希望每个人有一个节点名称。
有什么想法吗?
【问题讨论】:
-
我有点困惑。是节点上的情感值还是关系上的?当您说
A.sentiment时,这意味着它在节点上。 -
你是对的,我使用了误导性的符号。 A.这里的情绪是指对B关系的情绪。所以应该是(A)->[R:talksTo {sentiment:'10'}]->(B),其中情绪变量是问题所在。任何两个节点之间不能有超过一条边,并且 A 想用一些变量与 B 交谈,这些变量与 B 想要与 A 交谈的变量相同。我目前通过创建多个节点来解决这个问题,方法是 (Aout)-[:talksTo]->(Bin), (Bout)-[:talksTo]->(Ain);但我想知道是否有更好的解决方案
-
您绝对应该能够有两个关系,每个关系的方向相反,但仍然在相同的两个节点之间。你试过了吗?它会给你一个错误吗?
-
看看这篇文章,它可能会对 Neo4j 中的双向关系有所了解:graphaware.com/neo4j/2013/10/11/…
-
是的,我厌倦了它,它用新的关系取代了旧的关系。我认为这是不可能的,并且制作多个节点是唯一的方法(不要让查询变得如此混乱)。事实上,@Michal 提供的链接上发布的第一条评论(在页面底部)。谈到这个问题
标签: neo4j data-modeling key-value bidirectional-relation