Gremlin(海王星)价值的选择性展开

Selective unfolding of values from Gremlin (Neptune)

我有一个顶点,说:

Vertex vertex = g.addV("person")
                .property("name", "x")
                .property(VertexProperty.Cardinality.list, "email", "x@yahoo.com")
                .property(VertexProperty.Cardinality.list, "email", "x@gmail.com")
                .next();

我正在使用以下方法从顶点获取值:

g.V(vertex).valueMap(true).by(unfold()).next();

我得到:

{id=f862aa64-70d3-4c85-9bd0-1c938fdc2dc8, label=person, name=x, email=x@yahoo.com}

我希望提取 属性 电子邮件的所有值,因此我不想单独将 unfold() 应用于 属性,我该如何添加此条件?

此外,我希望在一个查询本身中执行此操作。

您可以 unfold valueMap 按值的数量:

g.V().valueMap().by(choose(
      count(local).is(eq(1)),
      unfold()
      identity()
    ))

示例:https://gremlify.com/bpy7apfj4yncr

或者您可以使用简单的 project:

g.V().project('name', 'email').
    by(values('name')).
    by(values('email').fold())

示例:https://gremlify.com/bqatjfi3rmrmt