如何在Gremlin的path中获取多个属性?当前仅返回单个属性
解决Gremlin路径查询同时返回多个属性的问题
我来帮你搞定这个问题~你当前的Gremlin查询之所以只拿到一个属性,是因为path().by('title').by('name')的逻辑是交替为路径中的每个节点选择属性——第一个节点取title,第二个取name,第三个又回到title,以此类推,并不是让每个节点都返回两个属性。
要让路径里的每个节点同时输出title和name,有两种常用的写法:
方法1:用valueMap直接获取指定属性
valueMap()可以把你需要的属性以键值对的形式返回,每个节点都会包含这两个属性(如果节点存在该属性的话):
g.V().repeat(out()).until(has('title','school')).path().by(valueMap('title','name'))
输出会类似这样的格式:[[title:["A"]], [name:["B"], title:["school"]]],能清晰展示每个节点的目标属性。
方法2:用project构建结构化输出
如果你想要更规整的输出结构,比如每个节点都明确是包含title和name的对象,可以用project()来定义输出结构:
g.V().repeat(out()).until(has('title','school')).path().by(project('title','name').by('title').by('name'))
这种写法的输出会更清晰,类似:[[title: "A"], [name: "B", title: "school"]],即使某个节点没有其中一个属性,也会显示为null(具体取决于你的图数据库实现)。
两种方法都能满足你同时获取两个属性的需求,你可以根据自己的输出偏好来选择~
内容的提问来源于stack exchange,提问作者Akhil Konduru
相关产品推荐
相关产品推荐

