Gremlin - 搜索多个子串
Gremlin - search for multiple substrings
对于给定的顶点,我可以找到 属性 myproperty
是否包含 单个 子串 substring1
,如下所示:
g.V(993280096)
.filter({it.get().value("myproperty").contains("substring1")})
我如何扩展它以在同一查询中搜索 多个 个子字符串?
大致如下:
g.V(993280096)
.filter({ it.get().value("myproperty")
.contains(or("substring1", "substring2"))})
有没有比使用 lambda 表达式更好的方法来做到这一点?请注意,我不想使用内置图形数据库(在我的例子中是 JanusGraph),因为我使用的是 gremlin-python.
发布后我确定了一个解决方案(虽然我不知道这是否是最好的方法)使用 matches
而不是 contains
:
g.V(993280096)
.filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})
您可以使用新的文本过滤谓词。在现代示例图上,您可以这样做,例如:
gremlin> TinkerFactory.createModern().traversal().V().
has("name", containing("ark").or(containing("os"))).values("name")
==>marko
==>josh
对于给定的顶点,我可以找到 属性 myproperty
是否包含 单个 子串 substring1
,如下所示:
g.V(993280096)
.filter({it.get().value("myproperty").contains("substring1")})
我如何扩展它以在同一查询中搜索 多个 个子字符串?
大致如下:
g.V(993280096)
.filter({ it.get().value("myproperty")
.contains(or("substring1", "substring2"))})
有没有比使用 lambda 表达式更好的方法来做到这一点?请注意,我不想使用内置图形数据库(在我的例子中是 JanusGraph),因为我使用的是 gremlin-python.
发布后我确定了一个解决方案(虽然我不知道这是否是最好的方法)使用 matches
而不是 contains
:
g.V(993280096)
.filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})
您可以使用新的文本过滤谓词。在现代示例图上,您可以这样做,例如:
gremlin> TinkerFactory.createModern().traversal().V().
has("name", containing("ark").or(containing("os"))).values("name")
==>marko
==>josh