gpt4 book ai didi

Gremlin python 返回具有所有属性的边

转载 作者:行者123 更新时间:2023-12-02 19:30:28 25 4
gpt4 key购买 nike

我正在使用 gremlin Python 查询 Neptune 数据库。给定一个顶点,我需要返回所有外边及其“从”和“到”id、标签和任何其他属性。

下面的查询

query_result = g.V().has('name', 'marco').outE().inV().path().toList()

以我可以解析为字典列表的形式给我“从”和“到”,边缘的值映射给我提供其他值,但我需要它在单个列表中返回。我理想的格式是 [{from: x, to: y, label: foo, property1: bar},...]

非常感谢任何帮助。

最佳答案

通过简单的投影结果就可以得到几乎你需要的结果。我将在最后添加一个示例,说明如何进一步扁平化它。您应该能够根据需要添加更多 valueMap 步骤等来调整此查询。这不会生成单个列表,而是将每个边及其属性、标签和 ID 分组。

请注意,我使用了 valueMap(true),但它已被弃用,新形式是 valueMap().with(WithOptions.tokens)。目前两者都仍然有效。这种方法的优点是不需要跟踪路径,这通常在查询引擎的内存使用等方面更有效。

gremlin> graph = TinkerFactory.createModern()
==>tinkergraph[vertices:6 edges:6]

gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]

gremlin> g.V().has('name','marko').
outE().
project('from','edge','to').
by(outV()).
by(valueMap(true)).
by(inV())

==>[from:v[1],edge:[id:9,label:created,weight:0.4],to:v[3]]
==>[from:v[1],edge:[id:7,label:knows,weight:0.5],to:v[2]]
==>[from:v[1],edge:[id:8,label:knows,weight:1.0],to:v[4]]

如果您想将此结果平铺到单个列表中,您只需向查询中添加一些内容即可:

gremlin> g.V().has('name','marko').
outE().
project('from','edge','to').
by(outV()).
by(valueMap(true)).
by(inV()).
union(select('edge').unfold(),
project('from').by(select('from')).unfold(),
project('to').by(select('to')).unfold()).fold()


[id=9,label=created,weight=0.4,from=v[1],to=v[3],id=7,label=knows,weight=0.5,from=v[1],to=v[2],id=8,label=knows,weight
=1.0,from=v[1],to=v[4]]

最后,如果您想要一系列此类列表而不是一个大列表,您可以将 union 步骤包装在 local 范围内。

gremlin> g.V().has('name','marko').
outE().
project('from','edge','to').
by(outV()).
by(valueMap(true)).
by(inV()).local(
union(select('edge').unfold(),
project('from').by(select('from')).unfold(),
project('to').by(select('to')).unfold()).fold())

==>[id=9,label=created,weight=0.4,from=v[1],to=v[3]]
==>[id=7,label=knows,weight=0.5,from=v[1],to=v[2]]
==>[id=8,label=knows,weight=1.0,from=v[1],to=v[4]]

关于Gremlin python 返回具有所有属性的边,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61883615/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com