Я пытаюсь начать обход с одного набора помеченных вершин, затем соединить все их вершины с определенным видом ребра, а затем вернуть свойство этих вершин как объекты.Я могу сделать то же самое с некоторыми внешними вершинами, начинающимися с того же набора помеченных вершин без проблем, но получить сообщение об ошибке «Предоставленный traverser не сопоставляется со значением:», когда я пытаюсь сделать это с некоторыми внутренними вершинами.
Я нашел обходной путь, но он не идеален, так как он возвращает желаемые значения свойств в виде массивов длины один.
Вот как я успешно выполняю очень похожую задачу с внешними вершинами: g.V().hasLabel('TestCenter').project('address').by(out('physical').project('street').by(values('street1')))
Это возвращает такие вещи, как
==>{address={street=561 PLACE DE CEDARE}}
==>{address={street=370 N BLACK STATION AVE}}
Это здорово!
Затем я пытаюсь выполнить такой же запрос с некоторыми вершинами, например: g.V().hasLabel('TestCenter').project('host').by(__.in('hosts').project('aCode').by(values('code')))
, и получаю вышеупомянутую ошибку.
Обходной путь, который я смог найти, заключается в добавлении .fold () к окончательному «by», например: g.V().hasLabel('TestCenter').project('host').by(__.in('hosts').project('aCode').by(values('code')).fold())
, но тогда мои ответы будут такими:
==>{host=[{aCode=7387}]}
==>{host=[{aCode=9160}]}
Мне бы хотелось, чтобы ответ выглядел следующим образом:
==>{host={aCode=4325}}
==>{host={aCode=1234}}
(Примечание: я не уверен, что это актуально, но я подключаю Gremlin к экземпляру БД Neptune)