OrientDB: информация о RecordLinks - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь запустить пакетную команду в 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, не так ли?

Кто-нибудь знает, как я могу это сделать?

1 Ответ

0 голосов
/ 17 мая 2018

Чтобы вернуть свойство объекта, вам просто нужно добавить .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 }

OrientDB Docs |SQL-Batch

...