1

このようなコードがあると仮定して、Neo4jデータベースで2つの頂点間のパスを見つけようとしています

newschool = g.addVerttex();
newschool.Title = 'A nice school';

newuser = g.addVertex();
newuser.name = 'student';

g.addEdge(newuser, g.V.filter{it.Title == 'school'}.next(), 'goesto');

両方の頂点の ID を知っていれば、必要なエッジを取り戻すことができますが、もちろんこれは動的ではありません。

g.v(2).outE.inV.retain([g.v(1)]).back(2);
==> e[1][2-goesto->1]

それで、これを変更して、作業中のクエリをより動的に拡張しようとしました:

g.V.filter{it.name == 'student'}.outE.inV.retain([g.V.filter{it.Title == 'A nice school'}]).back(2);

g.v(g.V.filter{it.name == 'student'}.id).outE.inV.retain([g.v(g.V.filter{it.Title == 'A nice school'}.id)]).back(2)

もちろん、どれもうまくいきませんでした...

g.V.filter{it.name =='student'}とがg.v(2)異なるのはなぜですか? なぜ とg.V.filter{it.name == 'student'}.id同じではないの2ですか?

私は何を取りこぼしたか?これを機能させるにはどうすればよいですか?

ありがとう。

4

2 に答える 2

1
g.v(1).out.loop(1){it.object != g.v(2)}.path

英語で:

「頂点 1 から開始し、到達するオブジェクトが頂点 2 ではない間に外向きのエッジをループします。パスを返します。」

このようなパターンの詳細については、http: //gremlindocs.comを参照してください。

于 2013-04-16T22:46:22.103 に答える