首页 > 解决方案 > OrientDB:有关 RecordLinks 的信息

问题描述

我正在尝试在 orientdb 中运行批处理命令,我正在更新记录(可以是边或顶点)。我正在尝试在批处理命令中运行它,以便我从数据库中取回属性“名称”和删除(假设“名称保证存在”)。

所以,我有以下批处理命令:

begin;
let a0 = update #44:845 merge {"name": "B4"} return after ;
let a1 = update #44:849 merge {"name": "Name4"} return after ;
let a2 = update #42:297 merge {"name": "Name2"} return after ;
let a3 = update #43:278 merge {"name": "B1"} return after ;
let a4 = update #42:298 merge {"name": "B2"} return after ;
let a5 = update #29:15698 merge { "name": "Name1""} return after ;
commit retry 100;
return [$a0,$a1,$a2,$a3,$a4,$a5]

但不是返回对象,而是返回 orientdbLinks,它不允许我获取对象的名称。

在我的批处理函数结束时,我想返回一个像这样的字典: {"B4", "44:845", "Name3": "44:849", . . .}

这可能吗?我尝试了一堆不同的命令

let a0 = update #44:845 merge {"name": "B4"} return after ;
let a0 = update #44:845 merge {"name": "B4"} return after [$current@rid, $current.name]; #This fails entirely
let a0 = update #44:845 merge {"name": "B4"} return after $current;

但无论我尝试什么,它只是返回一个 OrientDBRecordLink 而不是正确的 OrientDBStorageObject。据我所知,没有办法从 OrientDBRecordLink 获取属性,是吗?

有谁知道我该怎么做?

标签: batch-processingorientdb

解决方案


要返回对象的属性,您只需将 .field 附加到变量上,至于字典,您应该考虑返回地图:

return { "$a0.name" : $a0.@rid, "$a1.name" : $a1.@rid, "$a2.name" : $a2.@rid, "$a3.name" : $a3.@rid, "$a4.name" : $a4.@rid, "$a5.name" : $a5.@rid }

东方数据库文档 | SQL-批处理


推荐阅读