OrientDB 使用 Javascript 函数创建边不起作用
OrientDB creating edges with Javascript function doesn't work
美好的一天,
我有两个 类,一个代表住院(称为 Ricoveri),另一个代表出院(称为 Dimissioni)。两者都有一个名为 Nosologico 的 属性,代表入院的唯一标识符。
受 Luca Garulli 的一篇帖子的启发,我编写了一个 Javascript 函数,用于在 Nosologico 属性 上递归地创建两个 类 之间的边。
功能代码如下:
var g=orient.getGraph();
var b=g.command('sql','select from Ricoveri')
for(i=0; i<b.length; i++){
var id=b[i].getProperty("Nosologico").toString();
var rid=b[i].getId().toString();
var r=g.command("sql", "select from Dimissioni where Nosologico = '" + id + "'");
if(r.length>0){
var sql2="create edge dimesso from " + rid + " to (select from Dimissioni where Nosologico = '" + id + "')";
g.command('sql',sql2);
}
}
函数创建成功并执行无误,但它没有创建任何边。
有时整个服务器都被冻结,我别无选择,只能杀死它并重新启动它。
功能有问题吗?
谢谢。
QQ
也许我错了,但是,你做查询
var r=g.command("sql", "select from Ricoveri where Nosologico = '" + id + "'");
然后您验证结果的长度,但很明显 > 0(var id 来自 var b这是来自 Ricoveri 的第一个查询。
所以我是说,也许在 var r 中您想从 Dimissioni 查询?
var r=g.command("sql", "select from Dimissioni where Nosologico = '" + id + "'");
首先我建议,如果你还没有完成,在 nosologico 属性 和 类 中创建 UNIQUE_HASH_INDEXes .
然后假设 Dimissioni 中的每个 nosologico 也存在于 Ricoveri 中,并假设Dimissioni 比 Ricoveri 少,下面的查询应该更有效率。
var g=orient.getGraph();
var b=g.command('sql','select from Dimissioni');
var id="";
var rid="";
var sql2="";
for(i=0; i<b.length; i++){
id=b[i].getProperty("Nosologico").toString();
rid=b[i].getId().toString();
sql2="create edge dimesso from (select from Ricoveri where Nosologico = '" + id + "') to " + rid;
g.command('sql',sql2);
g.commit();
}
如果有帮助请告诉我。
伊万
美好的一天,
我有两个 类,一个代表住院(称为 Ricoveri),另一个代表出院(称为 Dimissioni)。两者都有一个名为 Nosologico 的 属性,代表入院的唯一标识符。
受 Luca Garulli 的一篇帖子的启发,我编写了一个 Javascript 函数,用于在 Nosologico 属性 上递归地创建两个 类 之间的边。
功能代码如下:
var g=orient.getGraph();
var b=g.command('sql','select from Ricoveri')
for(i=0; i<b.length; i++){
var id=b[i].getProperty("Nosologico").toString();
var rid=b[i].getId().toString();
var r=g.command("sql", "select from Dimissioni where Nosologico = '" + id + "'");
if(r.length>0){
var sql2="create edge dimesso from " + rid + " to (select from Dimissioni where Nosologico = '" + id + "')";
g.command('sql',sql2);
}
}
函数创建成功并执行无误,但它没有创建任何边。 有时整个服务器都被冻结,我别无选择,只能杀死它并重新启动它。
功能有问题吗?
谢谢。 QQ
也许我错了,但是,你做查询
var r=g.command("sql", "select from Ricoveri where Nosologico = '" + id + "'");
然后您验证结果的长度,但很明显 > 0(var id 来自 var b这是来自 Ricoveri 的第一个查询。
所以我是说,也许在 var r 中您想从 Dimissioni 查询?
var r=g.command("sql", "select from Dimissioni where Nosologico = '" + id + "'");
首先我建议,如果你还没有完成,在 nosologico 属性 和 类 中创建 UNIQUE_HASH_INDEXes .
然后假设 Dimissioni 中的每个 nosologico 也存在于 Ricoveri 中,并假设Dimissioni 比 Ricoveri 少,下面的查询应该更有效率。
var g=orient.getGraph();
var b=g.command('sql','select from Dimissioni');
var id="";
var rid="";
var sql2="";
for(i=0; i<b.length; i++){
id=b[i].getProperty("Nosologico").toString();
rid=b[i].getId().toString();
sql2="create edge dimesso from (select from Ricoveri where Nosologico = '" + id + "') to " + rid;
g.command('sql',sql2);
g.commit();
}
如果有帮助请告诉我。
伊万