Gremlin: объединение 2 или более вершин без ребер между ними в Cosmos DB Gremlin API - PullRequest
0 голосов
/ 17 июня 2020

Предположим, у меня есть вершина Employee и вершина Department. У сотрудника есть свойство DepartmentId, но между этими двумя вершинами нет края, могу ли я спроектировать имя отдела вместе с именем сотрудника ??

g.addV('employee').
  property('id', 1).
  property('name', 'A').
  property('departmentId', 1)

g.addV('department').
  property('id', 1).
  property('name', 'HR')

1 Ответ

4 голосов
/ 18 июня 2020

Я все еще считаю, что это плохой дизайн, и производительность здесь будет плохой.

g.V().hasLabel('employee').as('e').
  project('name', 'department name').
    by('name').
    by(V().hasLabel('department').
      has('_id', select('e').
        values('departmentId')).values('name'))

пример: https://gremlify.com/kudcz61i5j

Может быть, это будет лучшая производительность:

g.V().hasLabel('department', 'employee').
  group().by(coalesce(
      hasLabel('department').values('_id'),
      hasLabel('employee').values('departmentId')
    )).
    by(fold().as('group').unfold().
      hasLabel('employee').
      project('name', 'department name').
        by('name').
        by(select('group').unfold().
          hasLabel('department').values('name')).
      fold())

пример: https://gremlify.com/nndmumlshmo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...