【发布时间】:2017-06-12 22:46:27
【问题描述】:
数据库具有形成树的节点。每个节点都用谓词“precedes”跟在另一个节点之后。我想写一个查询,可以读取给定起始节点的整个树。
我尝试过 Morphism,但输出对我来说毫无意义。也许是因为我对“形态学”的真正含义缺乏了解......
任何提示或链接到实际的好例子将不胜感激
【问题讨论】:
标签: neo4j graph-databases gremlin cayley
数据库具有形成树的节点。每个节点都用谓词“precedes”跟在另一个节点之后。我想写一个查询,可以读取给定起始节点的整个树。
我尝试过 Morphism,但输出对我来说毫无意义。也许是因为我对“形态学”的真正含义缺乏了解......
任何提示或链接到实际的好例子将不胜感激
【问题讨论】:
标签: neo4j graph-databases gremlin cayley
正如@Bruno 在他的回答中指出的那样,Gremlin 中 * 的等价物是 FollowRecursive()。
var c1 = g.M().Both("precedes")
g.V("chain-1").FollowRecursive(c1).All()
这里的一个关键是 Morphism Query 中的 .Both 部分。它编码谓词的方向应该是In和Out。我不确定这如何映射到 Neo4j 查询模式
【讨论】:
在 Neo4j 中你应该这样做:
MATCH p = (:Root)-[:precedes*]-()
RETURN p
请注意,在关系类型之后指定的* 将在整个图表中进行完整搜索。它可能会导致内存问题。
【讨论】: