OrientDB:创建从父到子的边
OrientDB: creating edge from parent to child
我是图形数据库的新手。我很确定答案应该简单到一两个命令行。
我的架构非常简单。个人和电子邮件 class。 Person 和 Email、SendFrom 和 SendTo 之间存在边界。我想在由同一封电子邮件连接的 Person 顶点之间创建边。
例如,如果 A 发送电子邮件给 B。我想在 A 和 B 之间创建一条边,并增加边的计数 属性。
我尝试了类似 CREATE EDGE FROM (SELECT in() from Email) TO (SELECT out() from Email)
的方法。因为我使用的是 pyorient,一个用于 OrientDB 的 python 驱动程序,这可以在 Python 脚本中完成,或者只是 SQL 语言。
如果您需要更多信息,我会编辑我的 post。请告诉我。
我试过这个结构
这是图表。
我使用了这个javascript函数。
var g=orient.getGraph();
var c=g.command("sql","select in('SendFrom')[0].@rid as SF, out('SendTo')[0].@rid as ST from email");
for(i=0;i<c.length;i++){
var p1=c[i].getProperty("SF");
var id1=p1.toString();
id1=id1.substring(id1.lastIndexOf("[")+1,id1.lastIndexOf("]"));
var p2=c[i].getProperty("ST");
var id2=p2.toString();
id2=id2.substring(id2.lastIndexOf("[")+1,id2.lastIndexOf("]"));
g.command("sql","create edge e from " + id1 + " to " + id2 );
}
这是新结构
这是新图表
希望对您有所帮助。
这只是 Alessandro 使用 pyorient 的回答的 Python 版本。
cluster_id = client.command("create class Email_ex extends E")
rst = client.query("select in('SendFrom') as SF, out('SendTo') as ST " +
"from Email limit -1")
for email in rst:
for sf in email.SF:
for st in email.ST:
edge_ex = client.command("create edge Email_ex from " +
str(sf) + " to " + str(st));
我是图形数据库的新手。我很确定答案应该简单到一两个命令行。
我的架构非常简单。个人和电子邮件 class。 Person 和 Email、SendFrom 和 SendTo 之间存在边界。我想在由同一封电子邮件连接的 Person 顶点之间创建边。
例如,如果 A 发送电子邮件给 B。我想在 A 和 B 之间创建一条边,并增加边的计数 属性。
我尝试了类似 CREATE EDGE FROM (SELECT in() from Email) TO (SELECT out() from Email)
的方法。因为我使用的是 pyorient,一个用于 OrientDB 的 python 驱动程序,这可以在 Python 脚本中完成,或者只是 SQL 语言。
如果您需要更多信息,我会编辑我的 post。请告诉我。
我试过这个结构
这是图表。
我使用了这个javascript函数。
var g=orient.getGraph();
var c=g.command("sql","select in('SendFrom')[0].@rid as SF, out('SendTo')[0].@rid as ST from email");
for(i=0;i<c.length;i++){
var p1=c[i].getProperty("SF");
var id1=p1.toString();
id1=id1.substring(id1.lastIndexOf("[")+1,id1.lastIndexOf("]"));
var p2=c[i].getProperty("ST");
var id2=p2.toString();
id2=id2.substring(id2.lastIndexOf("[")+1,id2.lastIndexOf("]"));
g.command("sql","create edge e from " + id1 + " to " + id2 );
}
这是新结构
这是新图表
希望对您有所帮助。
这只是 Alessandro 使用 pyorient 的回答的 Python 版本。
cluster_id = client.command("create class Email_ex extends E")
rst = client.query("select in('SendFrom') as SF, out('SendTo') as ST " +
"from Email limit -1")
for email in rst:
for sf in email.SF:
for st in email.ST:
edge_ex = client.command("create edge Email_ex from " +
str(sf) + " to " + str(st));