有人可以通过这个简单的查询帮助我吗?非常感谢...

我正在使用以下gremlin查询,它可以很好地为我提供原始顶点(v)(id- = 12345),其边缘(e)和子顶点(id属性)。但是,假设原始顶点“ v”(id为12345)没有传出边,则查询将不返回任何内容。我仍然想要原始顶点('v')的属性,即使它没有输出边缘和一个子代也是如此。我怎样才能做到这一点?

g.V().has('id', '12345').as('v').
  outE().as('e').
  inV().
    as('child_v').
    select('v', 'e', 'child_v').
    by(valueMap()).by(id).by(id)

最佳答案

当前,您将获得大量重复数据,在上面的查询中,您将获得E次顶点属性。使用project可能会更好:

g.V('12345').project('v', 'children').
    by(valueMap()).
    by(outE().as('e').
      inV().as('child').
        select('e', 'child').by(id).fold())


例如:https://gremlify.com/a1

如果执行以下操作,则可以获取原始数据格式:

g.V('12345').as('v').
  coalesce(
    outE().as('e').
    inV().
      as('child_v')
    select('v', 'e', 'child_v').
    by(valueMap()).by(id).by(id),
    project('v').by(valueMap())
  )


例如:https://gremlify.com/a2

关于gremlin - 即使没有边缘并且使用select进行投影时,如何产生输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61873356/

10-16 09:55