我正在尝试使用.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”标签的闪亮新节点 - 所以参数不起作用。有人可以澄清我是不是只是犯了一个愚蠢的新手错误?
答案 0 :(得分:1)
您可以随时在查询中致电WithParams
。这就是Neo4jClient doco对“ 流畅 查询中的任何一点”的意思。
但是,Neo4j仅支持Cypher文本某些部分的参数。如果参数会影响查询计划,则不允许这样做。
在这种情况下,您不能使用标签参数。如果你想这样做,你需要动态地构建查询。
修改:即使这是参数的受支持位置,您至少必须在Cypher中编写{nodeLabel}
而不只是nodeLabel
。