Gremlin查询可在顶点之间搜索子字符串

时间:2018-08-13 10:10:39

标签: gremlin

我有一个图形,其中运行以下命令并获得以下结果:

gremlin> g.V().has("ip") //Query 1
==>v[127.0.0.11]
==>v[127.0.0.22]
==>v[127.0.0.33]

gremlin> g.V().has("mac") //Query 2
==>v[AA:BB:CC:00:11:FF]
==>v[A2:B2:C2:00:12:F2]
==>v[A3:B3:C3:00:13:F3]

gremlin> g.V().has("ip",like("*11*")) //Query 3
==>v[127.0.0.11]

gremlin> g.V().has("mac",like("*11*")) //Query 4
==>v[AA:BB:CC:00:11:FF]

gremlin> g.V().has("ip").or().has("macAddr") //Query 5
==>v[127.0.0.11]
==>v[127.0.0.22]
==>v[127.0.0.33]
==>v[AA:BB:CC:00:11:FF]
==>v[A2:B2:C2:00:12:F2]
==>v[A3:B3:C3:00:13:F3]

gremlin> g.V().union(has("ip"),has("macAddr")) //Query 6
==>v[127.0.0.11]
==>v[127.0.0.22]
==>v[127.0.0.33]
==>v[AA:BB:CC:00:11:FF]
==>v[A2:B2:C2:00:12:F2]
==>v[A3:B3:C3:00:13:F3]

对于要搜索给定搜索词的“ mac”和“ ip”,我有一个要求。
我尝试了以下两个查询,但只返回了与查询5和查询6相同的结果。有人能指出我正确的方向吗?

g.V().has("ip",like("*11*")).or().has("macAddr",like("*11*")) 

g.V().union(has("ip",like("*11*")),has("macAddr",like("*11*")))

1 个答案:

答案 0 :(得分:0)

经过反复试验,我发现了这一点(也许应该是我的第一步,但无论如何)。 可以通过在联合中包括g.V()来获得所需的解决方案,如下所示:

g.V().union(g.V().has("ip",like("*11*")),g.V()has("macAddr",like("*11*")))