1

您好,我想执行以下 Cypher 查询,计算我的指定节点与多少个节点有关系,并nodeName在此示例中传入。

这是查询:

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对象引用未设置为对象的实例。我错过了什么?

4

2 回答 2

2

我认为您正在运行一个非常旧版本的 Neo4jClient。我认为这是因为 a) 你没有 PDB,b) 它并没有因为你不能在你的Return调用中使用这样的命令而出现一个很好的错误。

  1. 请更新 Neo4jClient
  2. 如果它仍然崩溃,请将新的堆栈跟踪发布到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(); 

(注意:我在这里的文本框中手动输入了它,所以我没有测试它,但它应该是正确的。)

于 2013-05-06T13:31:21.023 回答
0

我对 C# 语法一无所知,但您可以尝试以下查询:

START n=node:NameIndex("Name:Mike")
MATCH (n)-->(x)
RETURN n, count(*)

也许query.Results返回 null 以便.ToList()生成 NullReference 异常。

于 2013-05-06T10:43:45.463 回答