OrientDB SQL: включить риды из связанных вершин

У меня есть одна вершина "A", связанная с вершинами "B" и "C".

Я хочу запросить A с добавленным списком идентификаторов записей B и C.

Пример того, как могут выглядеть свойства:

A:
{
   "@rid": "#1:0",
   "property": "ValueForA"
}

B:
{
   "@rid": "#2:0",
   "property": "ValueForB"
}

C:
{
   "@rid": "#2:1",
   "property": "ValueForC"
}

Я хочу запрос для А, который дает мне:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": ["#2:0", "#2:1"]
}

Я бы предпочел быть в состоянии сделать это только с проекциями. Это прекрасно работает для любого настраиваемого поля в B и C, но для @rid я получаю ссылку (почему это несоответствие?).

Я пробовал:

SELECT @rid, *, out().@rid as connected FROM #1:0

Который дает мне именно то, что я хочу, но список в списке - это ссылки на записи, а не только список.

А также

SELECT @rid, *, out().@rid.asString() as connected FROM #1:0

Который дает:

{
    "@rid": "#1:0",
    "property": "ValueForA",
    "connected": "[#2:0, #2:1]"
}

Где подключенное свойство это просто строка.

Вероятно, есть причина этого несоответствия @rid и других свойств. Как я уже писал, если @rid вместо "id", первый пример будет работать нормально. Несмотря на это, я хотел бы знать простой способ сделать это, потому что я чувствую, что это должно быть легко сделать.

Обновить

Добавление идентификатора в качестве примера свойства в приведенных выше примерах вводило в заблуждение, поскольку оно могло как-то намекать на то, что оно уникально (хотя я никогда не говорил этого), поэтому я удалил его. Я только добавил их, чтобы отделить 3 записи. Однако идентификатор записи - это то, что используется в качестве уникального идентификатора для разделения указанных выше вершин, поэтому использование каких-либо свойств записи невозможно. Чтобы уточнить далее, запись может иметь произвольные свойства. Не только примеры, приведенные выше.

Опять же, первый вопрос: возможно ли использование проекций?

Дополнительные комментарии: мне действительно странно, что я мог бы легко это сделать, если бы сделал свойство "rid", содержащее точно такой же идентификатор записи, что и @rid для каждой записи. Зачем мне это делать (я не буду этого делать), чтобы упростить его использование.

Update2

Я также хотел бы быть в состоянии предназначаться для нескольких вершин сразу и добавлять связи для каждой из них. Я делаю это уже, используя проекции, для многих свойств (но не @rid).

1 ответ

Тот факт, что запрос возвращает @rid как ссылку, является вполне нормальным, возможный способ сделать это. это может быть этот:

select id, property, $a from #21:0
let $a = (select out() from #21:0 where $parent.current.id = id)

это вывод:

Надеюсь, поможет.

С уважением

Другие вопросы по тегам