Создайте запрос "соединения" с данными из ребра и связанного вертикали
У меня есть Gremlin API Cosmos DB. В БД у меня есть один тип Vertice с меткой 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"
}
]
Это абсолютно как ожидалось. Теперь я хочу пойти немного дальше, и вместо того, чтобы просто показывать GUID в параметре inV, я также хочу включить Название компании в объект результата, но я не понимаю, как сделать эквивалент соединения 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
является одним из свойств в компании Vertice с гидом в inV
двигательный
1 ответ
Там нет "присоединиться". Данные уже связаны через край, поэтому вам просто нужно пройти дальше по графику, чтобы получить "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" нет "объединения". Поскольку данные неявно объединены через край, вам просто нужно пройти через inV()
чтобы добраться до данных там.