对于给定的顶点,我可以发现属性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。
答案 0 :(得分:2)
您可以使用新的文本过滤谓词。在现代样本图上,您可以执行以下操作:
public static void main(String[] args) throws IOException {
URL url = new URL(" https://webservice.com:1234");
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json; utf-8");
con.setRequestProperty("Accept", "application/json");
//con.setDoInput(true);
con.setDoOutput(true);
String jsonInputString = "\"ID\": \"12\"";
System.out.println(jsonInputString);
try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
os.flush();
}
System.out.println(con.getResponseCode());
答案 1 :(得分:0)
刚发布后,我使用matches
而不是contains
确定了解决方案(尽管我不知道这是否是最好的方法):
g.V(993280096)
.filter({ it.get().value("myproperty").matches(".* substring1.*|.* substring2.*")})