我在更新Orientdb中的嵌入字段属性时遇到了问题。
以下是重现此问题的步骤:
CREATE VERTEX Foo set value = { 'abc-def-hgi':"blah blah", '1ab-2cd-3ef': "aaaaa", '345-jkl-mno':'ppppp' }, id = 1
CREATE VERTEX Foo set value = { 'abc-def-hgi':"mmmmm", '1ab-2cd-3ef': "nmnmnmn", '345-jkl-mno':'qqqq' }, id = 2
CREATE VERTEX Foo set value = { 'abc-def-hgi':"lorem ipsum", '1ab-2cd-3ef': "mmmmm", '345-jkl-mno':'llll' }, id = 3
财产"价值"已被声明为类型"嵌入式"。
现在,我想用id" 1"更新记录。 for" abc-def-hgi"列中的属性"值"。
我尝试过以下查询,但都没有工作:
update Foo set value["abc-def-hgi"] = "new new" where id = 1
update Foo set value.abc-def-hgi = "new new" where id = 1
在字段的属性名称中似乎存在hypen(" - ")的问题。
我使用的是Orientdb的版本:2.2.11
注意:我在orientdb Git repo中找到了问题,我找到了this。不确定它是否与我的问题有关,但它不适合我。
任何帮助都会非常感激。
答案 0 :(得分:0)
正如你自己说的那样,问题出在 - 。
如果您尝试使用不带字段 - 以下查询有效。
实施例
update Foo set value.prop = "myprop1" where id=1
如果您尝试使用 - 创建字段,则会出现例外情况。
<强>更新强>
要使用连字符创建属性,可以使用此命令
create property foo.`abc-def-hgi` string
希望有所帮助
答案 1 :(得分:0)
关于&#39; - &#39;的使用在属性的名称中,您可以使用引号,因为Alessandro说或禁用&#34; Strict&#34;数据库选项中的值(在这种情况下,您将回滚到稍微不那么严格的旧解析器)