Methods Orientdb size()从内部返回不同的结果IF()

Methods Orientdb size()从内部返回不同的结果IF(),methods,conditional,orientdb,Methods,Conditional,Orientdb,此示例使用Tolkien Arda示例数据库和批处理模式。下面的脚本 LET $1 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='hildigrimTook'; LET $2 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='adalgrimTook'; SELECT INTERSECT($1, $2).size(); 返回7(我已经添加了

此示例使用Tolkien Arda示例数据库和批处理模式。下面的脚本

LET $1 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='hildigrimTook';
LET $2 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='adalgrimTook';
SELECT INTERSECT($1, $2).size();
返回7(我已经添加了附加值,我认为默认值是2)

但是,在完整脚本中使用时,size()似乎返回0,因此它总是创建一条新边

LET $1 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='hildigrimTook';
LET $2 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='adalgrimTook';
LET $3 = SELECT INTERSECT($1, $2);
LET $4 = CREATE EDGE Begets FROM (SELECT FROM Creature WHERE uniquename='hildigrimTook') TO (SELECT FROM Creature WHERE uniquename='adalgrimTook');
IF($3.size() > 0) {
    return 'Already present';
}
IF($3.size() == 0) {
    return $4;
}
该脚本应该检查HildigrimTake和AdalgrimTake之间的边,如果边不存在,则创建边。从IF()语句内部调用INTERSECT($1,$2).size()时,似乎返回0,但在用作SELECT语句的一部分时,返回7

我试过了

LET $1 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='hildigrimTook';
LET $2 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='adalgrimTook';
LET $3 = SELECT INTERSECT($1, $2);
SELECT $3.size()
但这也返回0。我也做了

LET $1 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='hildigrimTook';
LET $2 = SELECT expand(bothE(Begets)) FROM Creature WHERE uniquename='adalgrimTook';
LET $3 = SELECT INTERSECT($1, $2).size();
SELECT $3;
按预期返回7,但当我尝试在IF语句中运行它时,会出现Java空指针异常

IF($3 > 0) {
    return 'Already present';
}
IF($3 == 0) {
    return $4;
}

脚本的预期输出将是返回“已存在”或@rid(新创建的边缘)。感谢您的帮助,我已经尝试了所有我能想到的方法,文档中没有详细介绍。

您是否尝试了
$3.intersect
上的尺码?因为这就是您声明它的方式以及它的存储方式。您的意思是
IF($3.INTERSECT.size()
?我刚刚尝试了它,没有调用
IF
函数,而是调用
SELECT$3.INTERSECT.size()
按预期返回7。我一直在使用
IF
获得不同的行为,这似乎不正确我自己没有使用任何IF结构,因此无法真正帮助您,抱歉,伙计们,这似乎是执行器中的一个小错误,我现在正在处理它没有问题,我已经推动了修复(这里跟踪了错误)