【发布时间】:2017-09-15 15:36:56
【问题描述】:
我有一个数据库,其中包含游戏中使用的策略。
(strategy_1:Human) - [:BEATS] -> (strategy_1:Alien)
(strategy_2:Human) - [:BEATS] -> (strategy_1:Alien)
(strategy_3:Human) - [:LOSES] -> (strategy_1:Alien)
(strategy_4:Human) - [:DRAWS] -> (strategy_1:Alien)
(strategy_1:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_2:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_3:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_4:Human) - [:DRAWS] -> (strategy_2:Alien)
因此,人类的策略可以击败、平局或输掉外星人的策略。我正在尝试找到所有具有相同关系的策略,因此针对相同的 Alien 策略进行 BEAT、DRAW 或 LOSE。
在示例情况下,它将是 strategy_1 和 strategy_2。现在我正往这边走:
MATCH (strategyA:Human)-[r1]->(strategyB:Alien)<-[r2]-(strategyC:Human)
WHERE type(r1) = type(r2) AND NOT strategyA = strategyC
RETURN strategyA
但这当然只会给我所有至少有一个匹配关系的策略。我现在如何迈出步骤来测试 strategyA 和 strategyC 的所有关系?或者有更简单的方法吗?
【问题讨论】:
标签: neo4j cypher graph-databases nosql