Gremlin遍历查询如何获取除节点ID外的更多属性数据?
Gremlin查询修改方案
你当前的查询只返回节点ID,是因为path()步骤后指定了.by(T.id),仅对路径中的每个元素提取ID字段,调整by()内的规则即可返回更多节点信息。
方案1:返回节点全量信息(ID、Label、所有属性)
直接将by(T.id)替换为by(elementMap()),该方法会自动提取元素的ID、标签以及全部自定义属性,适配顶点、边两类元素的信息读取,适合可视化场景的全量数据需求。
修改后语句:
g.V("specific-id").emit().repeat(both().simplePath()).dedup().out().path() .by(elementMap())
方案2:自定义返回指定字段
如果只需要特定字段(比如仅保留ID、Label、name、category属性),可以用project()自定义返回结构,还可以通过defaultValue()为不存在对应属性的节点设置默认值,避免查询报错:
g.V("specific-id").emit().repeat(both().simplePath()).dedup().out().path() .by(project("id","label","name","category") .by(T.id) .by(T.label) .by(values("name").defaultValue("")) .by(values("category").defaultValue("")) )
补充说明
如果你的查询路径中同时包含顶点和边,只需要在path()后按顺序添加对应元素的by()规则即可,比如顶点和边都返回全量信息的写法:
// 路径元素为顶点、边、顶点、边...交替时,两个by规则会循环匹配对应元素 g.V("specific-id").emit().repeat(bothE().otherV().simplePath()).dedup().outE().inV().path() .by(elementMap()) .by(elementMap())
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

