C# で Neo4jClient と Neo4j グラフ データベースを使用していますが、Neo4jClient ですべてのノードを取得する方法を知りたいと思っています。
これは、関係の方向とは関係なく、「KNOWS」との関係を持つすべてのノードを取得する暗号クエリです。
start n =node(*) match n-[r:KNOWS]-(friend) return friend;
Neo4jClient を使用した C# コードは次のとおりです。
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
var cypherFluentQueryReturned = client.RootNode
.StartCypher("n")
.Match("n-[:KNOWS]->friend")
.Return<Node<Person>>("friend");
ただし、Neo4jClient では * からすべてのノードを取得することはできませんが、開始点 (ここではルート ノード) からのみ取得できます。
ルートノードに接続されているノードだけでなく、すべてのノードを取得するには、Neo4jClient でどのように言えばよいでしょうか?
* から Neo4jClient.GraphClient を介してノードをクエリする方法がないようです。
ただし、 RawGraphClient でクエリを実行することでそれを行うことができます。
CypherQuery query = new CypherQuery("start n=node(*) match n-[KNOWS]-(person) return person", new Dictionary<string, object>(), CypherResultMode.Set);
var persons = ((IRawGraphClient)client).ExecuteGetCypherResults<Person>(query).ToList();