遍历图形和过滤

时间:2017-05-06 19:40:53

标签: java orientdb

我正在尝试查询/遍历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做这件事,并且更喜欢这样做;我很容易被告知为什么我不应该这么做。

0 个答案:

没有答案