使用边和相连顶点的数据创建 "join" 查询

Create a "join" query with data from edge and connected vertix

我有一个 Gremlin API Cosmos DB。在数据库中,我有一种带有标签 User 的顶点,它们连接到标签为 Companies 的顶点。然后我想展示所有关联的公司。我执行查询 g.V('id-of-User').outE() 并获取所有关联的公司。结果可能如下所示:

[
  {
    "id": "08f97a1d-9e81-4ccc-a498-90eb502b1879",
    "label": "AuthorizedSignatory",
    "type": "edge",
    "inVLabel": "Company",
    "outVLabel": "User",
    "inV": "abd51134-1524-44fe-8a49-60d2d449a1f3",
    "outV": "103bf1b9-464f-4f68-a4ca-7dfdbe94ae84"
  },
  {
    "id": "c36b640b-9574-403b-8ab6-fcce695caa90",
    "label": "AuthorizedSignatory",
    "type": "edge",
    "inVLabel": "Company",
    "outVLabel": "User",
    "inV": "2c14d279-00a4-41ad-a8c0-f3b882864568",
    "outV": "103bf1b9-464f-4f68-a4ca-7dfdbe94ae84"
  }
]

这完全符合预期。现在我想更进一步,而不是仅仅在 inV 参数中显示 GUID 我还想在结果对象中包含公司名称,但我不明白如何做相当于 SQL加入这里。

谁能帮帮我!!

我想要的是类似于下面的例子:

[
  {
    "id": "08f97a1d-9e81-4ccc-a498-90eb502b1879",
    "label": "AuthorizedSignatory",
    "type": "edge",
    "inVLabel": "Company",
    "outVLabel": "User",
    "inV": "abd51134-1524-44fe-8a49-60d2d449a1f3",
    "outV": "103bf1b9-464f-4f68-a4ca-7dfdbe94ae84",
    "CompanyName": "ACME CORP"
  },
  {
    "id": "c36b640b-9574-403b-8ab6-fcce695caa90",
    "label": "AuthorizedSignatory",
    "type": "edge",
    "inVLabel": "Company",
    "outVLabel": "User",
    "inV": "2c14d279-00a4-41ad-a8c0-f3b882864568",
    "outV": "103bf1b9-464f-4f68-a4ca-7dfdbe94ae84",
    "CompanyName": "Giganticorp"
  }
]

其中 CompanyName 是 Company Vertice 中的属性之一,其 guid 在 inV prop.

没有"join"。数据已经通过边连接起来,因此您只需沿着图形进一步遍历即可获得 "CompanyName".

g.V('id-of-User').out().values("CompanyName")

这会显示与该用户相关的所有公司名称。如果您说除了示例中的公司名称之外,您还想显示来自边缘的数据,那么没问题,project() 边缘具体说明您想要什么:

g.V('id-of-User').outE().
  project('eid','label','companyName').
    by(T.id).
    by(T.label).
    by(inV().values("CompanyName"))

再次注意,"CompanyName" 没有 "join"。由于数据是通过边缘隐式连接的,因此您只需遍历 inV() 即可到达那里的数据。