我在C#中使用Neo4jClient和Neo4j图形数据库,我想知道如何使用Neo4jClient检索所有节点。
以下是cypher查询,用于检索与“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();
答案 0 :(得分:1)
使用Node<T>.StartCypher(identity)
是创建查询并一次性启动所有查询的快捷方式。
相反,只需直接从客户端创建查询:
client
.Cypher
.Start(new { n = All.Nodes })
.Return<object>("n")
然后,您可以完全控制START
子句。
答案 1 :(得分:-1)
我当然认为问题是因为它尚未在NEO4JClient库中实现,而且现在问题是Neo4JClient团队模糊了ExecuteGetCypherResults,所以现在我们必须直接实现IRawGraphClient或者只是使用HttpWebRequest实现。 : - /至少这是我在bitbucker的存储库中看到一些信息后得出的结论。