我正在尝试查询/遍历orientDB图,并且无法弄清楚如何在遍历期间进行过滤。
OTraverse traverse = txGraph.traverse();
traverse.setMaxDepth(3);
for(OIdentifiable obj : traverse.fields("in_friend","in","out","out_friend").target(new ORecordId("#15:8")).predicate(new OCommandPredicate(){
public Object evaluate(OIdentifiable iRecord, ODocument arg1, OCommandContext arg0) {
Vertex v = txGraph.getVertex( iRecord.getIdentity());
if (iRecord.getClass().equals("person") || (v.getProperty("test")!= null && v.getProperty("test").toString().equals("continue"))){
log.println(v.getProperty("test").toString());
return true;
}
return false;
}
此代码在节点#15:8(一个人)处开始遍历,并沿着#34; friend"类型的所有边缘开始遍历。我不完全确定我做得对,但结果看起来是正确的(直到我包含谓词函数)
我现在想做的是,只遵循#34;朋友"类型的边缘。并拥有一个属性" test"有价值"继续"
在此处的代码中使用谓词将在遇到任何顶点或任何不符合条件的Edge时立即停止遍历。
有没有办法让它不跟随那些特定的边缘,而是继续沿着其他边缘搜索图形?
ETA:我试图用Java做这件事,并且更喜欢这样做;我很容易被告知为什么我不应该这么做。