我有两个顶点:
1)顶点1:{ id: 1, name: “john” }
2)顶点2:{ id: 2, name: “mary” }
从 1 到 2 有一条边,名为“children”。
是否可以像这样使用 gremlin 返回嵌套在 1 中的 2?
{
id: 1,
name: “john”,
children: { id: 2, name: “mary” }
}
谢谢!
在@noam621 的帮助下我的解决方案 ---------------------------------
g.V(1)
.union( valueMap(true),
project('children').by( coalesce( out('children').valueMap(true).fold() , constant([]))),
project('parents').by( coalesce( out('parents').valueMap(true).fold() , constant([])))
)
.unfold().group().by(keys).by(select(values))
它返回以下对象:
{
id: 1,
name: [ “john” ],
children: [ { id: 2, name: [ “mary” ] } ],
parents: []
}
.union 与 project 是将所有对象合并到一个对象中的关键。valueMap(true).fold() 是获取边缘中所有对象的基础,如果边缘不返回任何顶点,则合并有助于使用默认值。
由于某些 Azure Cosmos gremlin 限制,只能将值作为数组值获取。因此,我在我的应用程序代码中最终确定了对象格式。现在没关系。
谢谢!