在gremlin javascript

时间:2018-06-10 10:13:13

标签: node.js gremlin tinkerpop tinkerpop3 gremlin-server

我想使用 gremlin-javascript 遍历远程图并获取顶点列表,其id在预定义ID列表中。

const gremlin = require('gremlin');
const Graph = gremlin.structure.Graph;
const GraphPredicate = gremlin.process.P;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;

const graph = new Graph();
const g = graph.traversal().withRemote(new DriverRemoteConnection('ws://localhost:8182/gremlin'));

g.V()
    .has('id', GraphPredicate.within([414, 99999]))
    .toList()
    .then(function (result) {
        console.log(result);
    });

以上是我尝试过的代码,但它给了我一个空的顶点列表,而我希望在结果中有一个顶点(414)

此外,当我使用下面的语句使用gremlin-console进行测试时,它在结果中给了我顶点(414)

:> g.V().hasId(within(414,99999))

所以我在这里有一些问题:

  • 我是否会错过配置中的某些内容以使用谓词?
  • 在javascript GraphPredicate.within([414,99999])的方法中 的参数应该是只是一个元素数组用逗号分隔的元素列表,就像使用gremlin-console一样?顺便说一句,我已经尝试了两种方式,但我总是得到一个空洞的结果。

提前谢谢你,

2 个答案:

答案 0 :(得分:3)

id是TinkerPop中的特殊属性,无法使用name属性"id"检索。

在您的情况下通过ID检索的正确方法应该是:

g.V().hasId(P.within(414, 99999)).toList()
  .then(result => console.log(result));

此外,删除within()电话:

可以简化此操作
g.V().hasId(414, 99999).toList()
  .then(result => console.log(result));

答案 1 :(得分:0)

我无法发表评论,但是要使用id,您需要使用gremlin.process.t.id

示例:

在Gremlin .by(id)
在JS .by(gremlin.process.t.id)

希望这很有帮助