g.V().has('organizationId', 'b121672e-8049-40cc-9f28-c62dff4cc2d9').
as('emp').
outE('hasStatus').
inV().
or(
has('endDate', gte(1587820000)),
has('release', is(false))
).
as('x').
values('status').
choose(is('Red'), constant(1),
choose(is('Orange'), constant(2),
choose(is('Yellow'), constant(3), constant(4)) ) ).
as('priority').
project('EmployeeId', 'FirstName', 'LastName','Email','PhoneNumber','Department',
'Status','EndDate').
by(select('emp').by('id')).
by(select('emp').by('firstName')).
by(select('emp').by('lastName')).
by(select('emp').by('email')).
by(select('emp').by('phoneNumber')).
by(select('emp').by('department')).
by(select('x').by('status')).
by(select('x').by('endDate')).
order().
by(select('priority')).
group().
by(select('emp').by('id')).
by(limit(1)).
unfold().
select(values)
以上是获取员工列表及其当前活动状态的查询,这里我获取的是具有当前活动状态的员工列表,但我需要那些仍然没有任何状态的员工,我需要一个查询来获取所有员工列表及其状态(如果存在),如果特定的员工没有状态,这些员工列表也应该显示为空状态。
也许你可以试试这样的方法。
g.V().has('organizationId', 'b121672e-8049-40cc-9f28-c62dff4cc2d9').
where(or(
out('hasStatus').or(
has('endDate', gte(1587820000)),
has('release', is(false))
),
out('hasStatus').count().is(0)
)).
project(
'EmployeeId',
'FirstName',
'LastName',
'Email',
'PhoneNumber',
'Department',
'Status',
'EndDate'
).by(id).
by('firstName').
by('lastName').by('email').
by('phoneNumber').
by('department').by(coalesce(
out('hasStatus').values('status'),
constant('no status')
)).
by(coalesce(
out('hasStatus').values('endDate'),
constant('no end date')
)).
order().
by(select('Status').
choose(
is('Red'),
constant(1),
choose(
is('Orange'),
constant(2),
choose(
is('Yellow'),
constant(3),
choose(
is('Green'),
constant(4),
constant(0)
)
)
)
))