Gremlin:找到两个节点之间的所有路径并将查询结果转换为JSON格式

Gremlin: Find all the paths between two nodes and transform the query result into JSON format

我正在 Neptune 数据库上编写 Gremlin python 查询

我想找到节点A和节点B之间的所有路径。

然后我想将数据写入 JSON 格式,如下所示:

{ "nodes": [
    { "id": 1, "name": "A", "color":"red"},
    { "id": 2, "name": "B", "color":"green"},
    { "id": 3, "name": "C", "color":"green"}
  ],
  "links": [
    { "source": 1, "target": 2, "color":"blue" }
    { "source": 1, "target": 3, "color":"purple" }
    { "source": 3, "target": 2, "color":"blue" }
  ]}

因此它与 d3.js 图形库兼容,我可以将结果加载到 d3 图形库中。

(在这种情况下,A 和 B 之间会有路径 A->B 和 A->C->B)

我想我可以为此使用 GraphSONWriter 吗?是吗?

各种 Gremlin 步骤可以产生在 Python(本质上是 JSON)中反序列化为字典的结果。要查看的步骤包括 groupprojectelementMapvalueMap - 如果调用 HTTP 端点(不推荐方式)。

要实现上述结果,可能需要将 elementMapprojectunion 结合使用。

当我使用像 D3.js 或 Vis.js 这样的库(使用 JSON 来构建他们的视觉模型)时,我通常 return 来自 Gremlin 的结果接近因为我可以将它变成最终形式(在合理范围内),然后在我的代码中创建最终的 JSON。我使用的一个常见流程是这个。

(1) Web client --> (2) API Gateway --> (3) Lambda --> (4) Neptune

该流程的步骤如下

  1. Javascript 调用 REST API,返回 JSON 结果并创建可视化。
  2. REST API 将调用路由到 Lambda 函数的端点
  3. Lambda 函数(用 Gremlin Python 编写)调用 Neptune,然后将结果转换为 JSON,然后再发送回客户端。
  4. Neptune 端点 - 运行 Gremlin 查询