在询问有关 Gremlin 的问题时,最好提供一些示例数据。我假设这是您的模型的近似值:
g.addV('package').property('name','gremlin').property('version', '1.0').
addV('package').property('name','gremlin').property('version', '2.0').
addV('package').property('name','gremlin').property('version', '3.0').
addV('package').property('name','blueprints').property('version', '1.0').
addV('package').property('name','blueprints').property('version', '2.0').
addV('package').property('name','rexster').property('version', '1.0').
addV('package').property('name','rexster').property('version', '2.0').iterate()
我认为没有一种方法可以比较输入对并期望索引命中。因此,您必须按照通常在图表中所做的操作并选择索引以最好地缩小结果范围,然后再在内存中进行过滤。我会假设在您的情况下,这将是“名称”属性,因此先获取这些属性,然后过滤这些对:
gremlin> g.V().has('package','name', within('gremlin','blueprints')).
......1> elementMap().
......2> where(select('name','version').is(within([name:'gremlin',version:'2.0'], [name:'blueprints',version:'2.0'])))
==>[id:3,label:package,name:gremlin,version:2.0]
==>[id:12,label:package,name:blueprints,version:2.0]