在gremlin查询中显示特定组织的员工名单及其当前状态。

问题描述 投票:0回答:1
 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)

以上是获取员工列表及其当前活动状态的查询,这里我获取的是具有当前活动状态的员工列表,但我需要那些仍然没有任何状态的员工,我需要一个查询来获取所有员工列表及其状态(如果存在),如果特定的员工没有状态,这些员工列表也应该显示为空状态。

gremlin graphdb azure-cosmosdb-gremlinapi tinkergraph
1个回答
4
投票

也许你可以试试这样的方法。

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)
            )
          )
        )
      ))

例如: https:/gremlify.com8t

© www.soinside.com 2019 - 2024. All rights reserved.