如何修改Gremlin查询仅返回实体的entityCode?
解决方案
保持树结构仅返回entityCode
如果需要保留原查询的树状结构,只需在原查询的tree()方法后添加.by('entityCode'),指定树节点显示的属性为entityCode:
查询祖先的entityCode树
g.V().has('_affinity', 'geography').has('isDeleted', false) .not(outE('isChildOf').has('hierarchyCollection', 'default')) .where(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false)) .emit() .repeat(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false) .dedup().outV().dedup() .has('_affinity', 'geography').has('isDeleted', false)) .has('id', 'ab5368aa-7abc-4f31-b980-7042fb1943e8') .tree().by('entityCode')
查询后代的entityCode树
g.V('ab5368aa-7abc-4f31-b980-7042fb1943e8') .has('_affinity', 'geography').has('isDeleted', false) .emit() .repeat(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false) .dedup().outV().dedup() .has('_affinity', 'geography').has('isDeleted', false)) .tree().by('entityCode')
返回所有相关entityCode的扁平列表
如果不需要树结构,只需要获取所有符合条件的entityCode集合,可以去掉tree(),改用.values('entityCode').dedup()去重后返回:
查询祖先的entityCode列表
g.V().has('_affinity', 'geography').has('isDeleted', false) .not(outE('isChildOf').has('hierarchyCollection', 'default')) .where(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false)) .emit() .repeat(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false) .dedup().outV().dedup() .has('_affinity', 'geography').has('isDeleted', false)) .has('id', 'ab5368aa-7abc-4f31-b980-7042fb1943e8') .values('entityCode').dedup()
查询后代的entityCode列表
g.V('ab5368aa-7abc-4f31-b980-7042fb1943e8') .has('_affinity', 'geography').has('isDeleted', false) .emit() .repeat(inE('isChildOf').has('hierarchyCollection', 'default').has('isDeleted', false) .dedup().outV().dedup() .has('_affinity', 'geography').has('isDeleted', false)) .values('entityCode').dedup()
为什么之前的尝试无效
select('entityCode')需要先通过project()或valueMap()定义投影字段才能生效,直接使用无法提取属性path().by('entityCode')返回的是遍历路径的节点属性,不是完整的树或集合结构cap('entityCode')用于捕获侧步(sideEffect)中的数据,不适合当前的遍历场景- 错误的位置调用方法(比如在
repeat内部错误使用select)会导致遍历逻辑混乱,返回异常或无关数据
内容的提问来源于stack exchange,提问作者Emilija Vilija Trečiokaitė
相关产品推荐
相关产品推荐

