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查询_Neo4j_Cypher - Fatal编程技术网

递归neo4j查询

递归neo4j查询,neo4j,cypher,Neo4j,Cypher,我有一个图,它有类别和子类别,子类别到无限水平。 如何在一个密码查询中获得所有这些分层数据 我目前有以下问题: START category=node:categoryNameIndex(categoryName = "category") MATCH path = category <- [rel:parentCategory] - subcategory RETURN category, collect(subcategory); 我正在使用node-neo4j。

我有一个图,它有类别和子类别,子类别到无限水平。 如何在一个密码查询中获得所有这些分层数据

我目前有以下问题:

START category=node:categoryNameIndex(categoryName = "category") 
MATCH path = category <-        [rel:parentCategory] - subcategory 
RETURN category, collect(subcategory);
我正在使用node-neo4j。 我将给出一个json格式的示例

[{
    "categoryName": "Test2",
    "categoryDescription": "testDesc",
    "imageUrl": "testUrl",
    "children": [{
        "categoryName": "Test1",
        "categoryDescription": "testDesc",
        "imageUrl": "testUrl",
        "children" :  [{
            "categoryName": "Test1",
            "categoryDescription": "testDesc",
            "imageUrl": "testUrl"
        }]
    }]
}]

我想这可能吗?我知道我可以通过编程或使用多个查询来完成。但是,如果可以在单个查询中完成,这将非常有用。

您可以通过在关系类型之后添加一个
*
来匹配任意深度的路径:

START category=node:categoryNameIndex(categoryName = "category") 
MATCH path = category <-[rel:parentCategory*]- subcategory 
RETURN category, collect(subcategory);
START category=node:categoryNameIndex(categoryName=“category”)

匹配路径=类别谢谢@ean5533。我将详细阐述我的问题,以便更好地理解。这个答案不回答你的问题吗?这是一个单一的问题。不,它回答了我的问题。如果您检查我给出的JSON示例,我希望它采用分层格式。我目前正在这样做,可能会引发多个查询。我不知道这是否可能,但如果可能的话,那将是非常有帮助的。似乎没有办法在一个查询中实现我想要的。我只是想避免触发多个查询。但你回答的第一个问题很有用,谢谢你。
START category=node:categoryNameIndex(categoryName = "category") 
MATCH path = category <-[rel:parentCategory*]- subcategory 
RETURN category, collect(subcategory);
START category=node:categoryNameIndex(categoryName = "category") 
MATCH path = category <-[rel:parentCategory*2..5]- subcategory 
RETURN category, collect(subcategory);