我正在尝试编写一个满足响应对象中两个要求的查询:
必须包括all顶点的属性,无需在查询中指定各个字段。
必须将结果展平到对象的同一水平上。
作为单独的查询,我可以这样做:
1. valueMap
query
g.V(1)
.valueMap().by(unfold()).fold()
回复:
{
"property1": "value1",
"property2": "value2"
}
2. project
query
g.V(1)
.project("projectedProperty")
.by(out("X").valueMap().by(unfold()).fold())
回复:
{
"projectedProperty": "value",
}
组合查询
我尝试使用联合来组合这些结果:
g.V(1)
.union(
valueMap().by(unfold()).fold(), // Query 1
project("projectedField").by(out("X").valueMap().by(unfold()).fold()) // Query 2
).fold()
回复:
{
[
{
"property1": "value1",
"property2": "value2"
},
{
"projectedProperty": "value"
}
]
}
这种联合方法依赖于我在末尾放置一个折叠,这反过来又无法正确合并/展平两个地图。预期响应是:
{
"property1": "value1",
"property2": "value2",
"projectedProperty": "value"
}
有没有更好的方法来完成合并/展平响应对象中的两个地图的任务?