【发布时间】:2013-02-25 16:25:24
【问题描述】:
我是 NEO4J 的新手,我需要针对特定问题的帮助。或者如果可能的话,也可以给出答案。
设置: 我们有 2 种不同类型的节点:用户 (A,B,C,D) 和产品 (1,2,3,4,5,6,7,8) 接下来,我们在用户和产品之间有 2 种不同类型的关系,其中用户想要产品和产品由用户拥有。
- 1,2归A所有
- 3,4 归 B 所有
- 5,6归C所有
- 7,8归D所有
现在
- B 想要 1 个
- C要3个
- D要5个
所以现在,我没有任何问题,并且我轻松创建了图形数据。我的问题从这里开始。当 A 想要产品 8 时,我们有一个圆圈。
A-[:WANTS]->8-[:OWNEDBY]->D-[:WANTS]->5-[:OWNEDBY]->C-[:WANTS]->3-[:OWNEDBY]- >B-[:WANTS]->1-[:OWNEDBY]->A
所以我们有一个独特的模式,U-[:WANTS]->P-[:OWNEDBY]->U
现在我要做的是按照该模式找到通往开始节点(启动想要产品的用户)的路径。 如何使用 Cypher 定义它?还是我需要其他方式?
先谢谢了。
【问题讨论】:
-
您在寻找从 U 到 U 的最短路径吗?如果是这样,这个问题之前已经回答过:stackoverflow.com/questions/14893127/cypher-query-shortest-path
-
是的,我正在寻找最短路径,但答案只涉及从-[:LINE*]-to。这个答案只有一种关系。我有不同的关系。
-
您可以匹配多个关系,即
from-[:LINE|ARROW*]-to。它在文档中:docs.neo4j.org/chunked/milestone/… -
这不是答案。该查询在两个节点之间查找关系 LINE“或”关系 ARROW。我正在寻找关系 USER_A WANTS PRODUCT,然后是 PRODUCT OWNEDBY USER_B,就像我的示例中一样
-
我自己通过引入一个额外的关系部分解决了这个问题。每次我有这种模式 A-[:WANTS]->P-[:OWNEDBY]->D 我创建一个关系 D-[:CANHAVE]->A 所以我的密码变成 START wanter=node(1) MATCH p= (wanter
标签: neo4j