如何在orientdb中更新嵌入列的属性

时间:2016-12-06 14:07:04

标签: orientdb orientdb2.2

我在更新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。不确定它是否与我的问题有关,但它不适合我。

任何帮助都会非常感激。

2 个答案:

答案 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;数据库选项中的值(在这种情况下,您将回滚到稍微不那么严格的旧解析器)