Как ссылаться на ID как параметр в Neo4J - PullRequest
0 голосов
/ 07 октября 2019

У меня есть узел с внутренним id 35831. Я запускаю следующий код в браузере Neo4J:

:params "id": 35831

match (t) where id(t) = $id return t

Ожидаемый результат: узел

Фактический результат: (без изменений, без записей)

Это ожидаемое поведение или я должен предоставить информацию о моей версии neo4j?

Ответы [ 2 ]

1 голос
/ 07 октября 2019

Вы можете использовать следующий синтаксис для установки параметра в браузере:

:param id => 1

....

{
  "id": 1
}

Тогда ваш запрос будет работать нормально:

 match (t) where id(t) = $id return t
1 голос
/ 07 октября 2019

В браузере Neo4j, когда вы устанавливаете числовой параметр, его тип является плавающим. Смотрите результат, когда вы набираете :params "id": 35831, вы должны видеть 35831.0 в качестве значения.

И именно поэтому ваш запрос ничего не возвращает ...

Но если вы используете этот запрос MATCH (n) WHERE id(n)=toInteger($id) RETURN n это работает!

К вашему сведению, это верно только для браузера, если вы используете cypher-shell, это будет работать так, как вы хотите:

neo4j> :param id 5
neo4j> MATCH (n) WHERE id(n)=$id RETURN n;
...