drum
drum

Reputation: 5651

Gremlin valueMap() all values inside lists

Say I do g.V().has("id", 1).valueMap().next()

The result is all in lists:

{
  "id": [1],
  "name" ["node1"]
}

How can I unfold all the inner lists so that it shows:

{
  "id": 1,
  "name" "node1"
}

Upvotes: 0

Views: 1043

Answers (1)

stephen mallette
stephen mallette

Reputation: 46226

I think you already answered your question in a sense - you use unfold()

g.V().has("id",1).
  valueMap().
    by(unfold())

That syntax only works on 3.4.0 when by() modulator was added to valueMap(). In earlier versions you can still do it but it's not as pretty:

g.V().has("id",1).
  valueMap().
  unfold().
  group().
    by(keys).
    by(select(values).unfold())

As you can see, you basically have to deconstruct the Map and then reconstruct it with group(). If you have multiple vertices you need to isolate the unfold() and so:

g.V().
  map(valueMap().
      unfold().
      group().
        by(keys).
        by(select(values).unfold()))

Upvotes: 4

Related Questions