以下内容可用于创建方案
CREATE CLASS v1 EXTENDS v
CREATE CLASS v2 EXTENDS v
CREATE PROPERTY v1.p1 STRING
CREATE PROPERTY v1.p2 STRING
CREATE PROPERTY v1.p3 STRING
CREATE PROPERTY v2.p1 STRING (MANDATORY TRUE)
CREATE PROPERTY v2.p2 STRING (MANDATORY TRUE)
CREATE PROPERTY v2.p3 STRING
CREATE INDEX v2.p1 UNIQUE
INSERT INTO v1 (p1,p2,p3) VALUES ('a','b','c')
INSERT INTO v1 (p1,p2,p3) VALUES ('d','e','f')
INSERT INTO v1 (p1,p2,p3) VALUES ('h','i','j')
INSERT INTO v2 (p1,p2,p3) VALUES ('a','y','z')
这些是以下选择查询的结果
从v1中选择
{
"result": [
{
"@type": "d",
"@rid": "#33:0",
"@version": 1,
"@class": "v1",
"p1": "a",
"p2": "b",
"p3": "c"
},
{
"@type": "d",
"@rid": "#34:0",
"@version": 1,
"@class": "v1",
"p1": "d",
"p2": "e",
"p3": "f"
},
{
"@type": "d",
"@rid": "#35:0",
"@version": 1,
"@class": "v1",
"p1": "h",
"p2": "i",
"p3": "j"
}
],
"notification": "Query executed in 0.011 sec. Returned 3 record(s)"
}
从v2中选择
{
"result": [
{
"@type": "d",
"@rid": "#41:0",
"@version": 1,
"@class": "v2",
"p1": "a",
"p2": "y",
"p3": "z"
}
],
"notification": "Query executed in 0.013 sec. Returned 1 record(s)"
}
我已经尝试了多个sql语句尝试将字段从v1合并到v2并且现在搜索谷歌近两天但是无法找到答案。你能告诉我哪里出错吗
LET $t = SELECT FROM v1
UPDATE v2 SET (p1,p2) VALUES ($t.$current.p1, $t.$current.p2) UPSERT WHERE $current.p1 = $t.$current.p1
期望的结果是更新v2中的当前记录以具有值'a,b,z'并且在v1中添加另外两个记录
答案 0 :(得分:1)
这是一个javascript函数。
JS功能:
var g = orient.getGraph();
var v1 = g.command("sql","SELECT FROM v1");
for(i=0; i<v1.length; i++){
var check_index = g.command("sql","select from index:v2.p1 where key='"+v1[i].getProperty("p1")+"'");
if(check_index.length>0){
//v1 record already present in v2 index - UPDATE
print("#### "+"update "+check_index[0].getProperty("rid").getId()+" set p2='"+v1[i].getProperty("p2")+"'"+" ####");
g.command("sql","update "+check_index[0].getProperty("rid").getId()+" set p2='"+v1[i].getProperty("p2")+"'");
} else {
//v1 record not present in v2 index - INSERT
print("#### "+"insert into v2 set p1='"+v1[i].getProperty("p1")+"',p2='"+v1[i].getProperty("p2")+"',p3='"+v1[i].getProperty("p3")+"'"+" ####");
g.command("sql","insert into v2 set p1='"+v1[i].getProperty("p1")+"',p2='"+v1[i].getProperty("p2")+"',p3='"+v1[i].getProperty("p3")+"'");
}
g.commit();
}