мне нужно возвращать узлы вместе с их идентификаторами, и такие вещи, как это следует избегать:Узел возврата с неизвестной структурой запроса-времени с добавленным «вычисленным» свойством?
RETURN n, ID(n) as n_ID
я бы очень предпочел, чтобы иметь возможность вернуть ID в «вычисленный» собственностью узел, так что клиент видит узел , как будто имеет свойство с именем id
.
Я уже несколько часов ломаю голову над этим. Ближайший я нашел this comment under an unsatisfying answer to a similar question:
MATCH (n:Person) RETURN { id: ID(n), name: n.name } as user
Этот метод бесполезен, поскольку он требует вручную реконструкции узла в качестве карты буквального в пункте RETURN. Это невозможно, если вы не знаете все имена свойств, которые будут типичным сценарием в моем приложении; плюс, может быть лотов свойств.
Следующее, что я пробовал, было оператором «+». Он выбрасывает несоответствие типа; вы не можете комбинировать карту с узлом таким образом. Я не могу найти какой-либо документированный способ конвертировать узел в карту. В документах упоминается KEYS(), но нет VALUES(), а также способ «закрепить» ключи и значения на карте.
Другое дело, я думал о попытке:
REDUCE(theMap = {id: ID(n)}, k in KEYS(n) | theMap + { what? : what? })
... но я не знаю ни как сделать «ключ переменной» в массиве буквальном, ни как доступ к свойству узла-переменным ключом.
Я пытаюсь сделать все возможное в cypher?
Это на вкус как поражение, но, возможно, это единственный способ ... грустно, как неортогональный Сайфер. Функции, которые очень похожи концептуально (оба узла и карты пар ключ-значение) упорно отказываются работать вместе. –