Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
适用于所有儿童的Neo4j回路_Neo4j_Cypher - Fatal编程技术网

适用于所有儿童的Neo4j回路

适用于所有儿童的Neo4j回路,neo4j,cypher,Neo4j,Cypher,在Neo4j中,我得到了以下节点: 如你所见,他们是通过关系连接的兄弟姐妹,如下一个或下一个兄弟姐妹;此外,第一个和最后一个孩子通过的第一个和最后一个孩子与父亲相连 我只是想找到一种循环它们的方法,以便创建一个字符串,即“abcdd” 是否有密码查询可以实现此功能?创建您的模型 为了便于进一步回答和解决问题,我注意到我的图表创建声明: CREATE (ormText:OrmText {name: 'orm_Text'})<-[:FIRST_CHILD_OF]-(letterA:Let

在Neo4j中,我得到了以下节点:

如你所见,他们是通过关系连接的兄弟姐妹,如下一个或下一个兄弟姐妹;此外,第一个和最后一个孩子通过的第一个和最后一个孩子与父亲相连

我只是想找到一种循环它们的方法,以便创建一个字符串,即“abcdd”

是否有密码查询可以实现此功能?

创建您的模型 为了便于进一步回答和解决问题,我注意到我的图表创建声明:

CREATE
  (ormText:OrmText {name: 'orm_Text'})<-[:FIRST_CHILD_OF]-(letterA:Letter {name: 'A'}),
  (letterA)-[:NEXT]->(letterB:Letter {name: 'B'}),
  (letterA)-[:NEXT_SIBLING]->(letterB),
  (letterB)-[:NEXT]->(letterC:Letter {name: 'C'}),
  (letterB)-[:NEXT_SIBLING]->(letterC),
  (letterC)-[:NEXT]->(letterD:Letter {name: 'D'}),
  (letterC)-[:NEXT_SIBLING]->(letterD),
  (letterD)-[:LAST_CHILD_OF]->(ormText);

延伸 如果您希望输出为单个
字符串而不是节点名称列表,请查看以下解决方案

解决方案
谢谢,我理解这种方法,我确信它是正确的,但我得到了错误“Variable
或mtext
not defined”。即使在这个变量的开头创建一个新的匹配,也会返回0条记录。“我错过什么了吗?”沃尔:对不起,是我的错。在优化过程中,有些事情稍微出了差错。我更正了两个
MATCH
语句,现在应该再次显示渲染结果。@我希望它现在对您有效,并解决了您的难题?要返回
或mtext
标签的属性,必须首先指定节点变量,并使用
子句循环每个
。解决方案:
MATCH letterPath=(ormText:ormText)(endLetter:Letter)-[LAST_CHILD_OF]->(ormText),节点(letterPath)作为letterNodes,或mtext.name作为ormTextName,过滤器(letterNodes中的x不是(x:ormText))作为letterNodes,或mtextname返回不同的reduce(s=头(letterNodes)。name,尾中的n(letterNodes)| s+'->'+n.name)作为字母字符串,或mtextname。这将导致
{“letterString”:“A->B->C->D”},{“ormTextName”:“orm_Text”}
MATCH
  letterPath = (startLetter)-[:NEXT|NEXT_SIBLING*]->(endLetter)
WHERE 
  (startLetter)-[:FIRST_CHILD_OF]->(:OrmText)<-[:LAST_CHILD_OF]-(endLetter)
WITH nodes(letterPath) AS letterNodes
UNWIND letterNodes AS letterNode
RETURN DISTINCT letterNode.name AS letterName;
╒════════════╕
│"letterName"│
╞════════════╡
│"A"         │
├────────────┤
│"B"         │
├────────────┤
│"C"         │
├────────────┤
│"D"         │
└────────────┘
MATCH
  letterPath = (startLetter)-[:NEXT|NEXT_SIBLING*]->(endLetter)
WHERE 
  (startLetter)-[:FIRST_CHILD_OF]->(:OrmText)<-[:LAST_CHILD_OF]-(endLetter)
WITH nodes(letterPath) AS letterNodes
RETURN DISTINCT reduce(s=head(letterNodes).name, n in tail(letterNodes) | s+" -> "+n.name) AS letterString;
╒══════════════════╕
│"letterString"    │
╞══════════════════╡
│"A -> B -> C -> D"│
└──────────────────┘