繁体   English   中英

Gremlin 查询以检查给定外部 map 中是否存在值

[英]Gremlin query to check if a value exists in the given external map

我想遍历图表,直到我的节点属性值存在于集合中。 Set 包含节点和普通对象的 id。

查询类似于:

public Map<String,Object> getNodes( Long startNodeID, Set<String, TraversedNode> mySet){
      return g.withSideEffect("x",mySet).V(startNodeID)
             .repeat( ...something )
             .choose( ...something )
             .until( myProperty is found in the given set  )
}

我在直到部分尝试了很多东西,但无法得到它。 有什么建议可以实现吗? 它可能与值和 where 关键字有关。

values("id").where(P.within("x"))不起作用

使用航线图作为样本数据,可以编写一个简单的查询,在查询进行时在提供的集合中查找 ID。 正如评论中提到的,这是否是您正在寻找的不是 100% 清楚,但也许它会帮助您解决问题。

gremlin> g.withSideEffect('s',[48,54,62,12]).
......1>   V(44).
......2>   repeat(out().simplePath()).
......3>   until(where(within('s')).by(id).by()).
......4>   path().
......5>   limit(5)

==>[v[44],v[8],v[48]]
==>[v[44],v[8],v[54]]
==>[v[44],v[8],v[12]]
==>[v[44],v[13],v[12]]
==>[v[44],v[13],v[48]] 

看起来您应该只能执行until(hasId(within('s'))) ,但在这种情况下's'被视为文字字符串“s”,而不是表示名为s的集合的符号。 当谓词嵌套在where步骤中时,例如where(within('s')) ,Gremlin 将其视为一种特殊情况,并将s视为之前声明的名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM