2

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();
4

2 に答える 2

1

を使用Node<T>.StartCypher(identity)すると、クエリを作成し、すべてを一度に開始するためのショートカットになります。

代わりに、クライアントから直接クエリを作成してください。

client
    .Cypher
    .Start(new { n = All.Nodes })
    .Return<object>("n")

その後、START句を完全に制御できます。

于 2013-03-22T04:41:15.510 に答える
-1

確かに問題はNEO4JClientライブラリにまだ実装されていないためだと思います。さらに、Neo4JClientチームがExecuteGetCypherResultsを隠していたため、IRawGraphClientを直接実装するか、HttpWebRequestを使用して単純に実装する必要があります。:-/少なくとも、bitbuckerのリポジトリにある情報を見た後、私はそれを結論付けました。

于 2012-11-06T21:34:57.143 に答える