我有一个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连接等效的操作。 / p>
有人可以帮我吗!
我想要的东西类似于以下示例:
[
{
"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
是公司顶点中具有inV
道具引导的属性之一。
答案 0 :(得分:0)
没有“加入”。数据已经通过边缘连接,因此您只需要沿图形进一步遍历即可获得“ 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()
即可到达那里的数据。