从gremlin查询中的值列表中筛选节点

从gremlin查询中的值列表中筛选节点,gremlin,titan,Gremlin,Titan,假设我有一个属性值列表作为ArrayList,如何根据列表中的值筛选节点 这样的事情可能发生吗 g.V().filter {it.get().value("name") in list} 此外,它是否与TinkerPop 2.x兼容?您可以简单地使用该步骤进行筛选,因为它可以获取一个值列表,这要归功于内部谓词: gremlin> g = TinkerFactory.createModern().traversal() ==>graphtraversalsource[tinkergr

假设我有一个属性值列表作为ArrayList,如何根据列表中的值筛选节点

这样的事情可能发生吗

g.V().filter {it.get().value("name") in list}
此外,它是否与TinkerPop 2.x兼容?

您可以简单地使用该步骤进行筛选,因为它可以获取一个值列表,这要归功于内部谓词:

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> names=['josh','peter']; g.V().has('name', within(names))
==>v[4]
==>v[6]
编辑:我的答案不再真正解决这个问题,因为它现在需要一个TinkerPop 2解决方案。我还是把它留在这里,以防有人在为TinkerPop 3寻找解决方案时偶然发现这个问题。

使用该步骤可以:

gremlin> [ 'Titan' : Titan.version(), 'TinkerPop' : Gremlin.version()]
==>Titan=0.5.4
==>TinkerPop=2.5.0
gremlin> g = TitanFactory.open('inmemory')
==>titangraph[inmemory:[127.0.0.1]]
gremlin> v0 = g.addVertex().setProperty('name', 'amith')
==>null
gremlin> v1 = g.addVertex().setProperty('name', 'jason')
==>null
gremlin> v2 = g.addVertex().setProperty('name', 'stephen')
==>null
gremlin> g.commit()
==>null
gremlin> l = ['amith', 'jason', 'florian'] // list to match
==>amith
==>jason
==>florian
gremlin> g.V().filter{ l.contains(it.getProperty('name')) }.map()
15:06:30 WARN  com.thinkaurelius.titan.graphdb.transaction.StandardTitanTx  - Query requires iterating over all vertices [()]. For better performance, use indexes
==>{name=amith}
==>{name=jason}
请记住,Titan 0.5.4在2015年2月发布的时间相当长,它取决于2014年4月发布的TinkerPop 2.5.0。泰坦号和泰坦号已不再处于积极开发阶段


<>你应该考虑继续前进,这是一个泰坦的分支,有一个活跃和开放的社区,并且保持着与最新版本.

HI的一致性,它与TIKEPOP兼容吗?XI不知道我已经多年没有使用TunkPoP 2了。当TinkerPop 3.0.0发布时,最好在您的问题中说明TinkerPop 2的具体时间。您使用的是什么图形数据库?Titan图形数据库