GET SUBGRAPH

    • WITH PROP:展示属性。不添加本参数则隐藏属性。

    • step_count:指定从起始点开始的跳数,返回从0到step_count跳的子图。必须是非负整数。默认值为1。

    • vid:指定起始点ID。

    • edge_type:指定Edge type。可以用INOUTBOTH来指定起始点上该Edge type的方向。默认为BOTH

    • YIELD:定义需要返回的输出。可以仅返回点或边。必须设置别名。不使用YIELD定义输出结果时,默认返回_vertices_edges

    Note

    GET SUBGRAPH语句检索的路径类型为trail,即检索的路径只有点可以重复,边不可以重复。详情请参见路径

    插入测试数据:

    1. nebula> CREATE SPACE subgraph(partition_num=15, replica_factor=1, vid_type=fixed_string(30));
    2. nebula> USE subgraph;
    3. nebula> CREATE TAG team(name string);
    4. nebula> CREATE EDGE follow(degree int);
    5. nebula> CREATE EDGE serve(start_year int, end_year int);
    6. nebula> INSERT VERTEX player(name, age) VALUES "player100":("Tim Duncan", 42);
    7. nebula> INSERT VERTEX player(name, age) VALUES "player101":("Tony Parker", 36);
    8. nebula> INSERT VERTEX player(name, age) VALUES "player102":("LaMarcus Aldridge", 33);
    9. nebula> INSERT VERTEX team(name) VALUES "team203":("Trail Blazers"), "team204":("Spurs");
    10. nebula> INSERT EDGE follow(degree) VALUES "player101" -> "player100":(95);
    11. nebula> INSERT EDGE follow(degree) VALUES "player101" -> "player102":(90);
    12. nebula> INSERT EDGE follow(degree) VALUES "player102" -> "player100":(75);
    13. nebula> INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204":(1999, 2018),"player102" -> "team203":(2006, 2015);
    • 查询从点player101开始、0~1跳、所有Edge type的子图。

      返回的子图如下。

      GET SUBGRAPH FROM "player101"

    • 返回的子图如下。

    为了展示子图的完整性,会在满足条件的所有点上额外查询一跳。例如下图。

    FAQ

    • GET SUBGRAPH 1 STEPS FROM "A";查询的满足结果的路径是A->BB->AA->C,为了子图的完整性,会在满足结果的点上额外查询一跳,即B->C

    • GET SUBGRAPH 1 STEPS FROM "A" IN follow;查询的满足结果的路径是B->A,在满足结果的点上额外查询一跳,即A->B

    如果只是查询满足条件的路径或点,建议使用或GO语句。例如:

    1. nebula> match p= (v:player) -- (v2) where id(v)=="A" return p;

    为什么返回结果中会出现低于step_count跳数的关系?