0

我在更新 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

属性“value”已被声明为“Embedded”类型。

现在,我想更新“值”列中“abc-def-hgi”属性的 id 为“1”的记录。

我尝试过以下查询,但它们都没有奏效:

update Foo set value["abc-def-hgi"] = "new new" where id = 1
update Foo set value.abc-def-hgi = "new new" where id = 1

字段属性名称中的连字符(“-”)似乎有问题。

我正在使用 Orientdb 的版本:2.2.11

注意:我在 orientdb Git repo 中查看了问题,我在其中找到了这个. 不确定它是否与我的问题有关,但它对我来说不起作用。

任何帮助将不胜感激。

4

2 回答 2

0

关于在属性名称中使用“-”,您可以使用 Alessandro 所说的引号或禁用数据库选项中的“严格”值(在这种情况下,您将回滚到不那么严格的旧解析器)

于 2017-05-14T00:04:45.910 回答
0

正如您自己所说,问题出在-。

如果您尝试使用没有的字段 - 以下查询有效。

例子

update Foo set value.prop = "myprop1" where id=1

如果您尝试使用 - 创建字段,则会出现异常。

更新

要使用连字符创建属性,您可以使用此命令

create property foo.`abc-def-hgi` string

希望能帮助到你

于 2016-12-06T14:50:18.457 回答