Mój cel to , aby uzyskać dostęp i zmutować właściwość węzła w kwerendie cyfrowej, gdzie nazwa właściwości, do której można uzyskać dostęp i zmutowana, jest nieznaną wartością ciągu.Jak uzyskać dostęp i zmutować wartość właściwości węzła za pomocą ciągu nazw właściwości w języku Cypher?
Przykładowo, za komendę:
Znajdź wszystkich węzłów zawierających dwa takie właściwości, że nazwa pierwszego właściwości jest małymi literami, a nazwa ta ostatnia jest przedstawienie wielkimi literami Poprzedniego. Następnie, propaguj wartość właściwości z małą nazwą ciągu znaków do wartości właściwości z dużą literą.
Konkretna sprawa jest prosta:
MATCH (node)
WHERE has(node.age) AND has(node.AGE) AND node.age <> node.AGE
SET node.AGE = node.age
RETURN node;
Ale nie wydaje się znaleźć sposób, aby wprowadzić ogólne sprawy w jednym wniosku.
Konkretnie, nie jestem w stanie:
- dostępu do właściwości węzła z ciągiem i wartość
- Mutate właściwość węzła z ciągiem i wartość
Dla jasności, zawieram moją próbę załatwienia sprawy ogólnej. Tam, gdzie nie udało mi się zmodyfikować właściwości węzła, udało mi się wygenerować szyfr dla polecenia, które osiągnęłoby mój cel końcowy, gdyby zostało wykonane w kolejnej transakcji.
MERGE (justToMakeSureOneExists { age: 14, AGE : 140 }) WITH justToMakeSureOneExists
MATCH (node)
WHERE ANY (kx IN keys(node) WHERE kx = LOWER(kx) AND ANY (ky in keys(node) WHERE ky = UPPER(kx)))
REMOVE node.name_conflicts // make sure results are current
FOREACH(kx in keys(node) |
SET node.name_conflicts
= COALESCE(node.name_conflicts,[])
+ CASE kx
WHEN lower(kx)
THEN []
+ CASE WHEN any (ky in keys(node) WHERE ky = upper(kx))
THEN ['match (node) where id(node) = ' + id(node)+ ' and node.' + upper(kx) + ' <> node.' + kx + ' set node.' + upper(kx) + ' = node.' + kx + ' return node;']
ELSE [] END
ELSE []
END)
RETURN node,keys(node)
Refleksja: Wydaje się, że zdolność do mutacji właściwość węzła według nazwy Nieruchomość byłoby dość powszechne wymaganie, ale brak oczywistego wsparcia dla funkcji pozwala mi wierzyć, że funkcja została pominięta celowo ? Jeśli ta funkcja jest rzeczywiście nieobsługiwana, czy istnieje dokumentacja wyjaśniająca, dlaczego i czy jest jakiś konflikt między podejściem a zalecanym sposobem działania w trybie Neo/Cypher?
Czy można rozszerzyć domyślne przetwarzanie szyfrowania na niezarządzane rozszerzenie? – smartcaveman
Nie. Niezarządzane rozszerzenie jest prezentowane jako nowy punkt końcowy REST. –
to jest to, co myślałem ... więc co dokładnie masz na myśli mówiąc, że chcesz zaimplementować właściwości mutacji według nazwy właściwości jako niezarządzanego rozszerzenia? (Interfejs API REST obsługuje to po wyjęciu z pudełka). – smartcaveman