查询边缘节点和边缘属性

时间:2018-12-05 04:20:13

标签: python python-2.7 gremlin tinkerpop tinkerpop3

我想以

的形式获取边缘属性的列表
[ {'src': nodeid, 'dst': nodeid, 'item': itemid},
  {'src': nodeid, 'dst': nodeid, 'item': itemid},
  ...
]

参考this question,我在gremlin_python中将查询表述如下:

g.V(user_list).bothE().hasLabel('share_item').dedup(). \
                project('src','dst','item'). \
                    by(outV().id()). \
                    by(inV().id()) \
                    by(coalesce(values('item_id'),constant(''))). \
                .toList()

但是,出现以下错误

TypeError: 'Column' object is not callable

我能够通过以下方式获取“ src”和“ dst”的列表

g.V(user_list).bothE().hasLabel('share_item').dedup(). \
                project('src','dst'). \
                    by(outV().id()). \
                    by(inV().id()) \
                .toList()

我错过了任何python关键字吗?还是我可以知道gremlin python有什么局限性?


更新:

就我而言,我确实有解决方法。但是,只会提取包含(src,dst,item)的边缘。

g.V(user_list).bothE().hasLabel('share_item').dedup(). \
                has('item'). \
                project('src','dst'). \
                    by(outV().id()). \
                    by(inV().id()) \
                    by('item'). \
                toList()

1 个答案:

答案 0 :(得分:0)

我的猜测是values('item_id')Column.values枚举混淆了。您想要的是遍历步骤values(),它从__类公开。导入了__类后,请尝试将代码更改为:

g.V(user_list).bothE().hasLabel('share_item').dedup(). \
            project('src','dst','item'). \
                by(outV().id()). \
                by(inV().id()) \
                by(coalesce(__.values('item_id'),constant(''))). \
            .toList()