2016-07-23 3 views
1

У меня есть простой запрос cypher и вы хотите изменить его с помощью параметров.Neo4j cypher query ORDER BY с параметрами

MATCH (u:User) WHERE u.email = {searchString} return u ORDER BY {sortField} {sortOrder} SKIP {skipNumber} LIMIT {limitNumber} 

При выполнении данного запроса результаты в следующей ошибки:

Invalid input '{': expected whitespace, comment, '.', node labels, '[', "=~", IN, STARTS, ENDS, CONTAINS, IS, '^', '*', '/', '%', '+', '-', '=', "<>", "!=", '<', '>', "<=", ">=", AND, XOR, OR, DESCENDING, DESC, ASCENDING, ASC, ',', SKIP, LIMIT, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN, UNION, ';' or end of input (line 1, column 87 (offset: 86)) "MATCH (lc:LeadContact) WHERE lc.email = {searchString} return lc ORDER BY {sortField} {sortOrder} SKIP {skipNumber} LIMIT {limitNumber}" 

Если удалить "{sortField} {SortOrder}" и написать статический текст (например, "ORDER по u.name ASC" запрос выполняется гладко:

MATCH (u:User) WHERE u.email = {searchString} return u ORDER BY u.name ASC SKIP {skipNumber} LIMIT {limitNumber} 

Почему высчитывать не позволяют параметры здесь Или я делаю что-то неправильно

ответ

1

? Для другого ORDER BY или направления может потребоваться другой план запроса. В настоящее время вы можете только параметризовать материал, который не влияет на план запроса. По той же причине метки и типы отношений не являются параметрируемыми.