{"SyntaxException:无效输入'{':需要一个标识符字符,空格
{"SyntaxException: Invalid input '{': expected an identifier character, whitespace
VB.NET 加载数千个节点并在它们之间建立关系的程序。我正在使用 Neo4J C# 客户端(版本 1.1.0.8)
其中一个命令是
TheConnection.GraphClient.Cypher.Match(
"(user1:StartingPoint)",
"(user2:Committee)"
).Where(
Function(user1 As StartingPoint)
user1.Id = KnowsID
).AndWhere(
Function(user2 As Committee)
user2.Id = KnownID
).Create(
"user1-[r: Knows ]->user2"
).ExecuteWithoutResults()
出于各种业务逻辑原因,我想通过 FECIDNumber(它实际上是一个字符串,例如 'C00530767')而不是 ID 来匹配节点。所以我改变了
- 从长整型到字符串的已知 ID
- user2.Id = 已知ID
这给了我以下查询
TheConnection.GraphClient.Cypher.Match(
"(user1:StartingPoint)",
"(user2:Committee)"
).Where(
Function(user1 As StartingPoint)
user1.Id = KnowsID
).AndWhere(
Function(user2 As Committee) user2.FECIDNumber = KnownID
).Create(
"user1-[r: Knows ]->user2"
).ExecuteWithoutResults()
执行时抛出
{"SyntaxException: Invalid input '{':expected an identifier character, whitespace, '?', '!', '.', node labels, '[', ""=~"", IN, STARTS, ENDS, CONTAINS, IS, '^', '*', '/', '%', '+', '-', '=', ""<>"", ""!="", '<', '>', ""<="", "">="", AND, XOR, OR or ')' (line 3, column 23 (offset: 95))" & vbLf & """AND (user2.FECIDNumber{p1}{p2} = {p3})" & vbCr & """" & vbLf & " ^"}
当我进入 Neo4J 浏览器并且 运行
MATCH (user:Committee) WHERE user.FECIDNumber = "C00530766" RETURN user
它 returns 预期的节点。
我认为错误的重要部分似乎是
(line 3, column 23 (offset: 95))
" & vbLf & """AND (user2.FECIDNumber{p1}{p2} = {p3})" & vbCr & """" & vbLf & "
看起来 Neo4J C# 客户端正在抛出第二个参数 {p2}
,但这只是一个猜测。
有什么建议吗?
编辑 1
(我不知道我什至可以提取原始查询文本)
它正在返回
MATCH (user1:StartingPoint), (user2:Committee)
WHERE (user1.Id = 1)
AND (user2.FECIDNumber"C00530766"false = 0)
CREATE user1-[r: Knows ]->user2
显然问题是
user2.FECIDNumber = KnownID).Create("user1-[r: Knows ]->user2")
以某种方式生成
user2.FECIDNumber"C00530766"false = 0
想法?我应该使用不同的语法吗?我需要将 FECIDNumber 转换为其他类型吗?
编辑 2
相同的代码现在生成
MATCH (user1:StartingPoint), (user2:Committee)
WHERE (user1.Id = 1)
AND (user2.FECIDNumber = "C00530766")
CREATE user1-[r: Knows ]->user2
它创建了预期的关系。
获胜者......
我已经发布了一个版本 (1.1.0.26),它应该可以为您解决这个问题,Nuget 需要几分钟时间来为它编制索引,所以从发布后给它 1/2 小时左右的时间...
告诉我!
VB.NET 加载数千个节点并在它们之间建立关系的程序。我正在使用 Neo4J C# 客户端(版本 1.1.0.8)
其中一个命令是
TheConnection.GraphClient.Cypher.Match(
"(user1:StartingPoint)",
"(user2:Committee)"
).Where(
Function(user1 As StartingPoint)
user1.Id = KnowsID
).AndWhere(
Function(user2 As Committee)
user2.Id = KnownID
).Create(
"user1-[r: Knows ]->user2"
).ExecuteWithoutResults()
出于各种业务逻辑原因,我想通过 FECIDNumber(它实际上是一个字符串,例如 'C00530767')而不是 ID 来匹配节点。所以我改变了
- 从长整型到字符串的已知 ID
- user2.Id = 已知ID
这给了我以下查询
TheConnection.GraphClient.Cypher.Match(
"(user1:StartingPoint)",
"(user2:Committee)"
).Where(
Function(user1 As StartingPoint)
user1.Id = KnowsID
).AndWhere(
Function(user2 As Committee) user2.FECIDNumber = KnownID
).Create(
"user1-[r: Knows ]->user2"
).ExecuteWithoutResults()
执行时抛出
{"SyntaxException: Invalid input '{':expected an identifier character, whitespace, '?', '!', '.', node labels, '[', ""=~"", IN, STARTS, ENDS, CONTAINS, IS, '^', '*', '/', '%', '+', '-', '=', ""<>"", ""!="", '<', '>', ""<="", "">="", AND, XOR, OR or ')' (line 3, column 23 (offset: 95))" & vbLf & """AND (user2.FECIDNumber{p1}{p2} = {p3})" & vbCr & """" & vbLf & " ^"}
当我进入 Neo4J 浏览器并且 运行
MATCH (user:Committee) WHERE user.FECIDNumber = "C00530766" RETURN user
它 returns 预期的节点。
我认为错误的重要部分似乎是
(line 3, column 23 (offset: 95))
" & vbLf & """AND (user2.FECIDNumber{p1}{p2} = {p3})" & vbCr & """" & vbLf & "
看起来 Neo4J C# 客户端正在抛出第二个参数 {p2}
,但这只是一个猜测。
有什么建议吗?
编辑 1
(我不知道我什至可以提取原始查询文本)
它正在返回
MATCH (user1:StartingPoint), (user2:Committee)
WHERE (user1.Id = 1)
AND (user2.FECIDNumber"C00530766"false = 0)
CREATE user1-[r: Knows ]->user2
显然问题是
user2.FECIDNumber = KnownID).Create("user1-[r: Knows ]->user2")
以某种方式生成
user2.FECIDNumber"C00530766"false = 0
想法?我应该使用不同的语法吗?我需要将 FECIDNumber 转换为其他类型吗?
编辑 2
相同的代码现在生成
MATCH (user1:StartingPoint), (user2:Committee)
WHERE (user1.Id = 1)
AND (user2.FECIDNumber = "C00530766")
CREATE user1-[r: Knows ]->user2
它创建了预期的关系。
获胜者......
我已经发布了一个版本 (1.1.0.26),它应该可以为您解决这个问题,Nuget 需要几分钟时间来为它编制索引,所以从发布后给它 1/2 小时左右的时间...
告诉我!