Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.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 Cypher)_Neo4j_Cypher_Neo4j Apoc - Fatal编程技术网

作为树中的子节点返回关系(Neo4j Cypher)

作为树中的子节点返回关系(Neo4j Cypher),neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,有没有办法将关系检索为树的子元素 这是我掌握的基本数据: CREATE (:Customer {id:1, name:'Customer 1'})<-[:CREATED_BY]-(c:Category {id:1, name:'Category 1'}) WITH c as category, range(2, 7) as subCatIds FOREACH (s IN subCatIds | CREATE (category)<-[:SUBCATEGORY_OF]-(:Catego

有没有办法将关系检索为树的子元素

这是我掌握的基本数据:

CREATE (:Customer {id:1, name:'Customer 1'})<-[:CREATED_BY]-(c:Category {id:1, name:'Category 1'})
WITH c as category, range(2, 7) as subCatIds
FOREACH (s IN subCatIds | CREATE (category)<-[:SUBCATEGORY_OF]-(:Category {id:s, name:'SubCategory '+s}))
WITH category, range(1, 5) as attTypeIds
FOREACH (a IN attTypeIds | CREATE (category)-[:HAS_ATTRIBUTE {name:'Attribute '+a, required: (a%2=0)}]->(:AttributeType {id:a, name:'AttributeType '+a}))
WITH category
MATCH p = (:AttributeType)<-[:HAS_ATTRIBUTE]-(category)<-[:SUBCATEGORY_OF]-(:Category)
RETURN p

CREATE(:Customer{id:1,name:'Customer 1'})您可以尝试将路径组合到单个列表中:

MATCH  (:Customer {id:1})<-[:CREATED_BY]-(c:Category {id:1}),
   SubCatsP = (c)<-[:SUBCATEGORY_OF*0..1]-(:Category),
   AttP = (c)-[:HAS_ATTRIBUTE]->(att:AttributeType)
WITH COLLECT(SubCatsP) + COLLECT(AttP) as category
CALL apoc.convert.toTree(category) yield value
RETURN value

MATCH(:Customer{id:1})将路径与+组合就是答案
MATCH  (:Customer {id:1})<-[:CREATED_BY]-(c:Category {id:1}),
       SubCatsP = (c)<-[:SUBCATEGORY_OF*0..1]-(:Category),
       AttP = (c)-[:HAS_ATTRIBUTE]->(att:AttributeType)
WITH COLLECT(SubCatsP) as category, RELATIONSHIPS(AttP) as attributes
CALL apoc.convert.toTree(category) yield value
RETURN value, attributes
{
 id: 1,
 name: 'Category 1',
 SUBCATEGORY_OF:[
   {id:2, name: 'Subcategory 2'}, ...
  ]
 HAS_ATTRIBUTE:[
   {name: 'Attribute 1', required: false, att: {name:'AttributeType 5',id:5}}, ...
<OR>
{name: 'Attribute 1', required: false, att.name:'AttributeType 5',att.id:5}, ...
  ]
}
MATCH  (:Customer {id:1})<-[:CREATED_BY]-(c:Category {id:1}),
   SubCatsP = (c)<-[:SUBCATEGORY_OF*0..1]-(:Category),
   AttP = (c)-[:HAS_ATTRIBUTE]->(att:AttributeType)
WITH COLLECT(SubCatsP) + COLLECT(AttP) as category
CALL apoc.convert.toTree(category) yield value
RETURN value