2017-05-22 63 views
0

我如何使用地圖來存儲多個鍵值屬性。我看到的問題是它不允許我存儲現有數據,每次嘗試設置新屬性時都會覆蓋數據。Orientdb 3.0如何在不丟失現有數據的情況下使用地圖字段獲取動態屬性

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

這應該做的伎倆:

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

在V 2.2也有一個UPDATE看跌期權,即。

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

,但它不支持了(而且是絕對醜陋)

+0

感謝路易吉,這正常工作與空值(最初?),或者我應該使用COALESCE函數? –

+0

謝謝你,Luigi –

相關問題