使用参数设置节点标签

时间:2014-02-11 11:58:01

标签: neo4jclient

我正在尝试使用.Net Neo4JClient将大量的Twitter数据堆积到Neo4J中。它本质上是每个节点的Twitter用户数据类型,但有些节点对其他节点有不同的意义,因此我想用不同的方式标记它们。

(我对Neo4J和客户都很陌生。)

所以我一直试图给它们贴上标签:

var query = _client.Cypher
              .Create("(primaryNode:nodeLabel {twitterUser})")
              .WithParams(new { nodeLabel = "nodeType", twitterUser } );


query.ExecuteWithoutResults();

注意:我拆分了ExecuteWithoutResults,所以我可以调试查询,它正在注册参数OK。这里的文档:

https://github.com/Readify/Neo4jClient/wiki/cypher#explicit-parameters

...建议可以“在流畅的查询中的任何位置”创建参数 - 但是这里有关于参数的Neo文档:

http://docs.neo4j.org/chunked/1.8.2/cypher-parameters.html

...有点暗示,这些参数专门用于WHERE子句,索引和关系ID。

无论如何 - 当我执行上述操作时,我得到一个标有“nodeLabel”标签的闪亮新节点 - 所以参数不起作用。有人可以澄清我是不是只是犯了一个愚蠢的新手错误?

1 个答案:

答案 0 :(得分:1)

您可以随时在查询中致电WithParams。这就是Neo4jClient doco对“ 流畅 查询中的任何一点”的意思。

但是,Neo4j仅支持Cypher文本某些部分的参数。如果参数会影响查询计划,则不允许这样做。

在这种情况下,您不能使用标签参数。如果你想这样做,你需要动态地构建查询。

修改:即使这是参数的受支持位置,您至少必须在Cypher中编写{nodeLabel}而不只是nodeLabel