Neptune with Tinkerpop > 如何转义 $ 符号?

Neptune with Tinkerpop > How to escape $ symbol?

试图添加包含 $

的 属性
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 "" @ 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 "" @ line 1, column 72.
   ').property("money", "10\$")
                                 ^

我的查询有什么问题?

感谢您报告此问题。这也已在 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','3') 
==>v[simba] 
gremlin> g.V().has('money','3') 
==>v[simba] 
gremlin> g.V('simba').property('new_money','123 ') 
==>v[simba]

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

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

此致,

迪维