#rest #parameters #neo4j #cypher #labels
#rest #параметры #neo4j #шифр #метка
Вопрос:
У меня есть запрос
1. CREATE (a:%1$s {props}), (b:%2$s {props2}), (b)-[:%3$s {relProps}]->(a)
2. MATCH (a:%1$s { value:{value} })-[:%2$s]->(b) WHERE (b:%3$s) SET (b {props})
Я использую underscore.string для разрешения строкового формата, но хотел бы просто придерживаться параметров.
Можно ли параметризовать метки, такие как
{
"query": CREATE (a:{label} {props}),
"params": {
"label":"SomeLabel",
"props":{....}
}
}
и можно ли также параметризовать свойства в НАБОРЕ?
{
"query": "MATCH ..... SET (node {props})"
"params": {
"props":{
"prop1:":"Property Name",
....
}
}
}
Также есть ли способ параметризации при «СЛИЯНИИ»? это дает мне «Карты параметров не могут использоваться в шаблонах СЛИЯНИЯ (вместо этого используйте буквальную карту, например. «{id: {param}.id}»)’
РЕДАКТИРОВАТЬ: как насчет параметризации предложения where?
MATCH (:Identity%1$s {nodeId:{nodeId})-[r*2..3]-(node1)-[b:%2$s]->(node2) %4$s return *
У меня есть % 4 $ s, чтобы я мог поместить любые предложения, которые мне нужны. Если я хочу, чтобы это было как
WHERE node1.nodeId= {someNodeId} SET b= {props}
возможно ли это??
Также, когда я выполняю транзакцию, НАБОР node={props}, похоже, не работает. Я пытался
statements:[
{
"statement":"..... SET node={props}",
"parameters":{
"props": {
"description":"some description"
}
}
}
]
Есть предложения?? Спасибо!
Ответ №1:
Вы не можете параметризовать метки, поскольку план запроса может выглядеть по-разному для разных меток.
Возможна параметризация нескольких свойств с помощью карты, обратите внимание на небольшое различие в SET
синтаксисе:
{
"query": "MATCH ..... SET node = {props}"
"params": {
"props":{
"prop1:":"Property Name",
....
}
}
}
Не на 100%, MERGE
но я думаю, это должно сработать:
{
"query": "MERGE (n:Label {identifier: {idValue}) ON CREATE SET n = {props}"
"params": {
"identifier": 123,
"props":{
"identifier": 123,
"prop1:":"Property Name",
....
}
}
}
Комментарии:
1. Спасибо, Стефан, настройка нескольких свойств определенно работает с этим запросом. Я попробую ОБЪЕДИНИТЬ, как вы предложили!
2. Можно ли это сделать так, чтобы это было не все или ничего? Я просто хочу обновить одно свойство, но, выполнив Set node ={props}, если я установлю одно свойство, все параметры будут перезаписаны. 🙁
3. использование
SET n = {props}
переопределяет существующие свойства и добавляет новые, оставляя другие нетронутыми.4. Эй, Стефан, я получаю сообщение об ошибке «Недопустимый ввод» «: ожидаемый пробел, комментарий……..’. Мой запрос таков: «Совпадение (a:% 1 $ s { значение:{значение} })-[:% 2 $ s]-> (b) где (b:% 3 $ s) УСТАНОВИТЬ b = {props} »
Ответ №2:
Я узнал!
CREATE ... SET node = {props}
помогает ли установить несколько свойств с параметрами
документ: http://docs.neo4j.org/chunked/snapshot/cypher-parameters.html