Arango db在遍历图时生成面包屑

 鬎瀰_418 发布于 2023-02-13 17:17

我搜索了整个arangodb项目网站,但没有找到解决方案.如果我像大洲/国家/首都一样遍历简单的树,我怎样才能获得当前项目的面包屑?希望有道理

1 个回答
  • 我将从你的例子开始使用arangosh和Gremlin.JS.后来我将使用AQL,所有语言驱动程序都可用.

    arangosh [_system]> var Graph = require("org/arangodb/graph").Graph;
    

    首先是不同的地点(地区,城市):

    arangosh [_system]> v1 = g.addVertex("Earth");
    arangosh [_system]> v2 = g.addVertex("Europe");
    arangosh [_system]> v3 = g.addVertex("Germany");
    arangosh [_system]> v4 = g.addVertex("Berlin");
    arangosh [_system]> v5 = g.addVertex("Spain");
    arangosh [_system]> v6 = g.addVertex("Barcelona");
    

    和他们的关系:

    arangosh [_system]> g.addEdge(v1, v2);
    arangosh [_system]> g.addEdge(v2, v3);
    arangosh [_system]> g.addEdge(v3, v4);
    arangosh [_system]> g.addEdge(v2, v5);
    arangosh [_system]> g.addEdge(v5, v6);
    

    所以图表现在是你的树:

    arangosh [_system]> v1.outbound().getInVertex()
    [ Vertex("Europe") ]
    
    arangosh [_system]> v1.outbound().getInVertex().outbound().getInVertex()
    [  [  Vertex("Germany"),  Vertex("Spain") ] ]
    
    arangosh [_system]> v1.outbound().getInVertex().outbound().getInVertex().outbound().getInVertex()
    [  [  [  Vertex("Berlin")  ],  [  Vertex("Barcelona")  ]  ]  ]
    

    为了从柏林那里得到面包屑,你可以计算从柏林到地球的路径:

    arangosh [_system]> v4.pathTo(v1);
    [
      [
        "Berlin",
        "Germany",
        "Europe",
        "Earth"
      ]
    ]
    

    使用AQL,您可以使用遍历从柏林遍历到根:

    arangosh [_system]> db._query('FOR p in TRAVERSAL(locations, part, @start, "inbound", {}) RETURN p.vertex._key', { start: v4._id } ).toArray()
    [
      "Berlin",
      "Germany",
      "Europe",
      "Earth"
    ]
    

    我希望这个例子能让你知道如何创建面包屑.

    干杯弗兰克

    2023-02-13 17:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有