2014-10-10 7 views
0

У меня 4 узла A, B, C, D, имеющие следующие свойства,Как перечислить все узлы, которые, имеющие общие свойства в Neo4j

A:{works_in:"wipro"},{designation:"SE"} 

B:{works_in:"CTS"},{designation:"SSE"} 

C:{works_in:"CGI"},{designation:"SE"} 

D:{works_in:"UHG"},{designation:"SSE"} 

Теперь я хочу, чтобы отобразить все узлы, которые оказывает аналогичные свойства либо works_in/обозначение

ответ

2

Вы можете попробовать что-то вроде:

MATCH (a:YourLabel) 
WITH a 
MATCH (b:YourLabel) 
WHERE a <> b AND (b.works_in = a.work_in OR b.designation = a.designation) 
RETURN a, COLLECT(b) AS similar 

Это будет изначально соответствовать всем узлам, а затем использовать каждый узел в качестве источника для нового запроса. a <> b остановит узлы, соответствующие самим себе.

+0

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

+0

Привет, Джон, можем ли мы назвать имя свойства, которое получило соответствие с другими узлами –

1

Я попытался с помощью следующего запроса, его работы тонкой

MATCH (A),(B) 
    WHERE A. works_in =B. works_in 
    RETURN A. works_in as Node1_and_Node2_working_in; 

но проблема я столкнулся здесь каждый узел является соответствие сам. поэтому результат приходит как, Node1_and_Node2_working_in

      wipro (A-to-A) 

          cts (B-to-B) 

          cgi (C-to-C) 

          uhg (D-to-D) 

Можем ли мы решить эту проблему с любым встроенным в команде или имущества. если да, пожалуйста, поделитесь своим мнением.

0

Хей Паван, я бы сделал это так:

Этот запрос вернет все Узел, который works_in CGI или CTS и иметь обозначение типа SE или SSE.

MATCH (n) WHERE n.works_in =~ 'C.*' AND n.designation =~ '(?i)S.*' return n 

Это вернет Nodes B и C. С =~ оператора вы можете использовать регулярные выражения в запросе

Может быть, вы также хотите иметь быстрый взгляд в Neo4j Docs

Если запрос должен возвращать только узлы, которые соответствуют только рабочим_информам, то используйте

MATCH (n) WHERE n.works_in = 'WinPro' 

или

MATCH (n) WHERE n.designation = 'SE' 

Другая идея заключается в создании узла со свойствами, как имя и E-Mail и создать узел, как навык (CGI, Java, WinPro) или проекта и соединить их со связями, как WORKS_IN или LOCATED_IN .. .

Patrick

+0

Привет, Патрик, спасибо за ваш быстрый ответ. Мне нужно отображать узлы, которые имеют похожие свойства, но не указанные свойства. Я думаю, что вы получили разницу. –

+0

Привет, Патрик, можем ли мы назвать имя свойства, которое получило соответствие с другими узлами? –

+0

@PavanKumarVarma, вы можете сделать вызов для отдыха, например. curl -v GET localhost: 7474/db/data/node//properties Он вернет все свойства со значениями. – Patrick

Смежные вопросы