计算节点的Cypher查询问题?
您好,我想执行下面的Cypher查询来计算我指定的节点与多少个节点有关系,并且我在本例中通过了nodeName
。计算节点的Cypher查询问题?
下面是该查询:
START n=node:NameIndex(Name = "Mike")
MATCH (n)-->(x)
RETURN n, count(*)
这里是我的尝试:
public IEnumerable<VersionNode> GraphNodeCount(string nodeName)
{
GraphQueryLogger.Trace("Now entering GraphNodeCount(string nodeName) Method");
IEnumerable<VersionNode> queryResult = null;
clientConnection = graphOperations.GraphGetConnection();
var query = clientConnection
.Cypher
.Start(new CypherStartBitWithNodeIndexLookup("n", "NameIndex", "Name", nodeName))
.Match("n", "-->", "x")
.Return<VersionNode>("n, count(*)");
queryResult = query.Results.ToList();
return queryResult;
}
这里是我的主要方法:
GraphQuery graphQuery = new GraphQuery();
var query = graphQuery.GraphNodeCount("Mike");
foreach (var item in query)
{
Console.WriteLine(item.Name);
}
这里是堆栈跟踪:
at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.WaitAll(Task[] tasks, Int32 millisecondsTimeout)
at System.Threading.Tasks.Task.WaitAll(Task[] tasks)
at Neo4jClient.GraphClient.Neo4jClient.IRawGraphClient.ExecuteGetCypherResults[TResult](CypherQuery query)
at Neo4jClient.Cypher.CypherFluentQuery`1.get_Results()
at ContentManager_Test.ContentManager_Library.Level_1_API.Graph.Query.GraphQuery.GraphNodeCount(String nodeName)
我得到NullReferenceException was unhandled
未将对象引用设置为对象的实例。 我错过了什么?
我认为你运行的是Neo4jClient的一个非常旧的版本。我认为这是因为:a)你没有PDB和b)它不会因为你不能在你的Return
调用中使用命令而出现一个很好的错误。
- 请更新Neo4jClient
- 如果它仍然崩溃,发布新的堆栈跟踪https://bitbucket.org/readify/neo4jclient/issues/new,所以我们可以跟踪和修正错误
这些天来,您的查询应该是这样的:
var queryResults = clientConnection
.Cypher
.Start(new {
n = Node.ByIndexLookup("NameIndex", "Name", nodeName)
})
.Match("n-->x")
.Return(n => new {
Foo = n.As<VersionNode>(),
CountOfAllNodes = All.Count()
})
.Results
.ToList();
(注意:我在这里输入了文本框中的内容,所以我没有测试它,但它应该是正确的。)
Tatham to the rescue! – 2013-05-06 15:08:33
我不知道C#的语法什么,但你可以尝试以下查询:
START n=node:NameIndex("Name:Mike")
MATCH (n)-->(x)
RETURN n, count(*)
也许query.Results
返回空值,这样.ToList()
产生NullReference例外。
查看 - > http://hg.readify.net/neo4jclient/wiki/cypher – 2013-05-06 10:46:25
请您说明您面临的问题?任何异常或没有结果等? – Gopi 2013-05-06 10:17:29
@戈皮我已经更新了这个问题,我得到一个NullReferenceException /对象引用未设置为对象的实例。 – 2013-05-06 10:24:13
在这种情况下,提供堆栈跟踪也是有帮助的。 – Gopi 2013-05-06 10:27:33