Orientdb 3.0 如何在不丢失现有数据的情况下将映射字段用于动态属性
Orientdb 3.0 How to use map field for dynamic attributes without loosing existing data
我如何尝试使用地图来存储多个键值属性。我看到的问题是它不允许我存储现有数据,每次我尝试设置新的 属性 时它都会覆盖数据。
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};
将 属性1 设置到地图中,并更新它,效果很好。
update ( SELECT from Person where name="test") SET mapField=
{"property1":mapField.property1+30};
select from Person;
设置另一个属性 "property2",现在我松开属性1.
update ( SELECT from Person where name="test") SET mapField=
{"property2":mapField.property2+10};
select from Person;
我可以保留以前的 属性 并使这项工作仍然有效吗?
谢谢
哈里
这应该可以解决问题:
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');
但它不再受支持(而且它确实很丑)
我如何尝试使用地图来存储多个键值属性。我看到的问题是它不允许我存储现有数据,每次我尝试设置新的 属性 时它都会覆盖数据。
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};
将 属性1 设置到地图中,并更新它,效果很好。
update ( SELECT from Person where name="test") SET mapField=
{"property1":mapField.property1+30};
select from Person;
设置另一个属性 "property2",现在我松开属性1.
update ( SELECT from Person where name="test") SET mapField=
{"property2":mapField.property2+10};
select from Person;
我可以保留以前的 属性 并使这项工作仍然有效吗?
谢谢 哈里
这应该可以解决问题:
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');
但它不再受支持(而且它确实很丑)