У меня есть то, что кажется довольно простым вопросом Сайфера.Cypher: исключить общие узлы?
У меня есть следующие данные, где у меня есть два узла A и 3 B узлы с b1, связанные с a1, b2, связанные с a2, и b3 является общим и относится как к a1, так и a2. Моя цель - написать оператор Cypher, который, учитывая конкретный узел A, вернет узлы B, которые связаны только с ним и не связаны с каким-либо другим узлом A. Например, при заданном узле a1 запрос должен возвращать b1, а когда задан узел a2, b2 должен быть возвращен. Узел b3, который относится как к a1, так и a2, никогда не должен возвращаться из этого запроса, независимо от того, какой из них указан. Говоря иначе, я пытаюсь найти узлы B, которые являются уникальными для данного узла A, поскольку результирующие узлы B не связаны ни с каким другим узлом А, кроме указанного в моем совпадении.
В этом примере данные (надеюсь) сделать мою цель более ясно:
CREATE (n:A { code: 'a1' })
CREATE (n:A { code: 'a2' })
CREATE (n:B { code: 'b1' })
CREATE (n:B { code: 'b2' })
CREATE (n:B { code: 'b3' })
match (a:A), (b:B) where a.code = 'a1' and b.code = 'b1' create (a)<-[r:A_AND_B]-(b) return a, r, b
match (a:A), (b:B) where a.code = 'a2' and b.code = 'b2' create (a)<-[r:A_AND_B]-(b) return a, r, b
match (a:A), (b:B) where a.code = 'a1' and b.code = 'b3' create (a)<-[r:A_AND_B]-(b) return a, r, b
match (a:A), (b:B) where a.code = 'a2' and b.code = 'b3' create (a)<-[r:A_AND_B]-(b) return a, r, b
Если бы я был готов включить общий узел b3, запрос будет прямо вперед и быть:
матча (a: A) - [r: A_AND_B] - (b: B), где a.code = 'a1' return b
Это возвращает b1 и b2. Однако, учитывая, что я хочу включить любые B-узлы, которые относятся к другому узлу A (b2 в этом случае не нужно возвращать), я изо всех сил стараюсь найти правильный подход и синтаксис.
Я исследовал изученные СИФ Cypher и ДОПОЛНИТЕЛЬНЫЕ МАТЧЫ, пока не повезло. Я также могу выполнить то, что хочу, если я использую два отдельных запроса, которые немного обманывают и уклоняются от возможности обучения.
Может ли кто-нибудь обеспечить повышение?
Это было именно импульс мне нужен; Спасибо за вашу помощь. –