I'm trying to write a single query that satisfies two requirements in the response object:
Must include all properties of a vertex, without specifying individual fields in the query.
Must flatten results at the same level on the object.
As separate queries, I can do:
1. valueMap
query
g.V(1)
.valueMap().by(unfold()).fold()
Response:
{
"property1": "value1",
"property2": "value2"
}
2. project
query
g.V(1)
.project("projectedProperty")
.by(out("X").valueMap().by(unfold()).fold())
Response:
{
"projectedProperty": "value",
}
Combined query
I've attempted to use a union to combine these results:
g.V(1)
.union(
valueMap().by(unfold()).fold(), // Query 1
project("projectedField").by(out("X").valueMap().by(unfold()).fold()) // Query 2
).fold()
Response:
{
[
{
"property1": "value1",
"property2": "value2"
},
{
"projectedProperty": "value"
}
]
}
This union approach relies on me putting a fold at the end, which in turn doesn't merge/flatten the two maps properly. Expected response is:
{
"property1": "value1",
"property2": "value2",
"projectedProperty": "value"
}
Is there a better way to accomplish this task of merging/flattening two maps in the response object?
unfold().group().by(keys).by(select(values))
after the union. – Demulcent