Groovy 如何将HashMap转换为Titan筛选器的闭包

Groovy 如何将HashMap转换为Titan筛选器的闭包,groovy,titan,gremlin,Groovy,Titan,Gremlin,我正在使用Gremlin2.5.0/Groovy2.3.7 我有一个hashMap,其中包含要筛选的参数/值的键值对。例如,我有 [param1:val1, param2:val2:, param3:val] 我要进行的查询类型是: g.V.filter{it.param1=='val1' && it.param2=='val2' && it.param3=='val3'} 有没有一种简单的Gremlin/Groovy方法可以使用hashMap进行查询?我不知

我正在使用Gremlin2.5.0/Groovy2.3.7

我有一个hashMap,其中包含要筛选的参数/值的键值对。例如,我有

[param1:val1, param2:val2:, param3:val]
我要进行的查询类型是:

g.V.filter{it.param1=='val1' && it.param2=='val2' && it.param3=='val3'}

有没有一种简单的Gremlin/Groovy方法可以使用hashMap进行查询?

我不知道过滤器闭包中什么是可以接受的,但这可能有效

def params = [param1:'val1', param2:'val2':, param3:'val3']
g.V.filter{
    params.every {key, value ->
        it[key] == value
    }
}

我不知道什么是可以接受的过滤器关闭,但这可能会工作

def params = [param1:'val1', param2:'val2':, param3:'val3']
g.V.filter{
    params.every {key, value ->
        it[key] == value
    }
}

我不知道什么是可以接受的过滤器关闭,但这可能会工作

def params = [param1:'val1', param2:'val2':, param3:'val3']
g.V.filter{
    params.every {key, value ->
        it[key] == value
    }
}

我不知道什么是可以接受的过滤器关闭,但这可能会工作

def params = [param1:'val1', param2:'val2':, param3:'val3']
g.V.filter{
    params.every {key, value ->
        it[key] == value
    }
}

在可能的情况下,您应该避免在Gremlin中使用
过滤器
,尤其是在Titan和大型图形上。使用
过滤器将阻止Titan正确使用索引。如果可能,您应该更喜欢使用
has

我将尝试使用您的
地图构建管道

gremlin> g = TinkerGraphFactory.createTinkerGraph()  
==>tinkergraph[vertices:6 edges:6]
gremlin> params = [name:'josh',age:32]               
==>name=josh
==>age=32
gremlin> pipeline = g.V();null                       
==>null
gremlin> params.each{k,v->pipeline=pipeline.has(k,v)}
==>name=josh
==>age=32
gremlin> pipeline                                    
==>v[4]

在可能的情况下,您应该避免在Gremlin中使用
过滤器
,尤其是在Titan和大型图形上。使用
过滤器将阻止Titan正确使用索引。如果可能,您应该更喜欢使用
has

我将尝试使用您的
地图构建管道

gremlin> g = TinkerGraphFactory.createTinkerGraph()  
==>tinkergraph[vertices:6 edges:6]
gremlin> params = [name:'josh',age:32]               
==>name=josh
==>age=32
gremlin> pipeline = g.V();null                       
==>null
gremlin> params.each{k,v->pipeline=pipeline.has(k,v)}
==>name=josh
==>age=32
gremlin> pipeline                                    
==>v[4]

在可能的情况下,您应该避免在Gremlin中使用
过滤器
,尤其是在Titan和大型图形上。使用
过滤器将阻止Titan正确使用索引。如果可能,您应该更喜欢使用
has

我将尝试使用您的
地图构建管道

gremlin> g = TinkerGraphFactory.createTinkerGraph()  
==>tinkergraph[vertices:6 edges:6]
gremlin> params = [name:'josh',age:32]               
==>name=josh
==>age=32
gremlin> pipeline = g.V();null                       
==>null
gremlin> params.each{k,v->pipeline=pipeline.has(k,v)}
==>name=josh
==>age=32
gremlin> pipeline                                    
==>v[4]

在可能的情况下,您应该避免在Gremlin中使用
过滤器
,尤其是在Titan和大型图形上。使用
过滤器将阻止Titan正确使用索引。如果可能,您应该更喜欢使用
has

我将尝试使用您的
地图构建管道

gremlin> g = TinkerGraphFactory.createTinkerGraph()  
==>tinkergraph[vertices:6 edges:6]
gremlin> params = [name:'josh',age:32]               
==>name=josh
==>age=32
gremlin> pipeline = g.V();null                       
==>null
gremlin> params.each{k,v->pipeline=pipeline.has(k,v)}
==>name=josh
==>age=32
gremlin> pipeline                                    
==>v[4]