Я использую NEO4J apo c .refactor.setType, чтобы изменить безотносительный тип отношений без удачи - PullRequest
0 голосов
/ 27 апреля 2020
I am trying to change the rel type of a relationship as outlined below and getting the following error:
Neo.ClientError.Statement.SyntaxError: Procedure call inside a query does not support naming results implicitly (name explicitly using `YIELD` instead) (line 4, column 22 (offset: 224))
"                     call apoc.refactor.setType(r, 'OWNED')"

Если добавление YIELD является ответом, я не уверен, что к YIELD ??

MATCH (user:Owner {email: "xyz@mymail.com"})-[r:OWNS]->(v:Vehicles {name:"Chevy"})
                         WHERE r.model = "Silverado" OR NOT EXISTS(r.model)
                         WITH r,user,v
                         call apoc.refactor.setType(r, 'OWNED')
                         YIELD ?????
                        RETURN user,r,v

1 Ответ

1 голос
/ 27 апреля 2020

Вы можете использовать процедуру apo c .help , чтобы увидеть сигнатуру функций APO C. Например, результат этого оператора:

CALL apoc.help("apoc.refactor.setType")

:

╒═══════════╤══════════════════╤══════════════════╤══════════════════╤═══════╤════════╕
│"type"     │"name"            │"text"            │"signature"       │"roles"│"writes"│
╞═══════════╪══════════════════╪══════════════════╪══════════════════╪═══════╪════════╡
│"procedure"│"apoc.refactor.set│"apoc.refactor.set│"apoc.refactor.set│null   │null    │
│           │Type"             │Type(rel, 'NEW-TYP│Type(relationship │       │        │
│           │                  │E') change relatio│:: RELATIONSHIP?, │       │        │
│           │                  │nship-type"       │newType :: STRING?│       │        │
│           │                  │                  │) :: (input :: INT│       │        │
│           │                  │                  │EGER?, output :: R│       │        │
│           │                  │                  │ELATIONSHIP?, erro│       │        │
│           │                  │                  │r :: STRING?)"    │       │        │
└───────────┴──────────────────┴──────────────────┴──────────────────┴───────┴────────┘

Итак, apoc.refactor.setType имеет следующие переменные: input, output и error .

Этот запрос должен работать у вас:

MATCH (user:Owner {email: "xyz@mymail.com"})-[r:OWNS]->(v:Vehicles {name:"Chevy"})
WHERE r.model = "Silverado" OR NOT EXISTS(r.model)
CALL apoc.refactor.setType(r, 'OWNED') YIELD output
RETURN user, output AS r, v
...