Orientdb 3.0如何在不丢失现有数据的情况下将地图字段用于动态属性

时间:2017-05-22 19:06:55

标签: orientdb

我如何尝试使用map存储多个键值属性。我看到的问题是它不允许我存储现有数据,每次我尝试设置新属性时它都会覆盖数据。

 Create VERTEX Person extends V;
CREATE CLASS Person EXTENDS V;
CREATE PROPERTY Person.name STRING (MANDATORY TRUE, MIN 3, MAX 50);
Create VERTEX Person set name="test";
 update ( SELECT from Person where name="test") SET mapField=
 {"property1":mapField.property1+10};

将property1设置为map,并更新它,工作得很好。

update ( SELECT from Person where name="test") SET mapField=
{"property1":mapField.property1+30};
select from Person;

设置另一个属性" property2",现在我松开了property1。

update ( SELECT from Person where name="test") SET mapField=
{"property2":mapField.property2+10};
 select from Person;

是否可以保留以前的财产并让这项工作仍然有效?

由于 哈

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

update ( SELECT from Person where name="test") 
SET mapField.property1 = mapField.property1 + 30;

在V 2.2中还有一个UPDATE PUT选项,即。

update ( SELECT from Person where name="test") 
PUT mapField = property1, eval('mapField.property1 + 30');

但它不再受支持了(而且它绝对是丑陋的)