1

试图添加一个包含$

gremlin> g.V('some-node-id').property("money", "10 $")
groovysh_parse: 1: illegal string body character after dollar sign;
   solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 1, column 72.
   ').property("money", "10 $")

所以我逃脱了$符号

gremlin> g.V('some-node-id').property("money", "10\$")
{"requestId":"xyz","code":"MalformedQueryException","detailedMessage":"Query parsing failed at line 1, character position at X, error message : token recognition error at: '$'"}
Type ':help' or ':h' for help.

尝试基本的转义,效果很好

gremlin> g.V('some-node-id').property("money", "10\"")
==>v[some-node-id]

$自从海王星发疯以来,逃跑次数增加了一倍

gremlin> g.V('some-node-id').property("money", "10\\$")
groovysh_parse: 1: illegal string body character after dollar sign;
   solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 1, column 72.
   ').property("money", "10\\$")
                                 ^

我的查询有什么问题?

4

1 回答 1

2

感谢您报告此问题。这也已在 Amazon Neptune 论坛中得到解答https://forums.aws.amazon.com/thread.jspa?messageID=862849

此问题的解决方法是在要添加 $ 符号的字符串周围使用单引号。例如:

gremlin> g.addV("Animal").property(id,"simba") 
==>v[simba] 
gremlin> g.V('simba').property('money','$123') 
==>v[simba] 
gremlin> g.V().has('money','$123') 
==>v[simba] 
gremlin> g.V('simba').property('new_money','123 $10') 
==>v[simba]

但是,我确实知道在您转义 $ 后它也应该与双引号一起使用。这是我们解析器中的一个错误,我们正在积极进行修复。

此外,我应该注意,该错误仅影响以 groovy 语言编写的客户端,这些客户端将查询作为字符串发送,例如 gremlin 控制台。GLV (Java/Python/DotNet/JS) 和其他“$”字符不是保留字符的基于字符串的客户端可以正常工作。

问候,

迪维

于 2018-08-10T22:35:24.140 回答