我有4个节点A,B,C,D具有以下属性,
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 / designation
答案 0 :(得分: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
将停止与自身匹配的节点。
答案 1 :(得分: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)
我们可以使用任何内置命令或属性来解决这个问题。如果是这样,请分享您对此的看法。
答案 2 :(得分:0)
Hej Pavan,我会这样做:
此查询将返回所有工作在CGI或CTS上的节点,并且具有SE或SSE等名称。
MATCH (n) WHERE n.works_in =~ 'C.*' AND n.designation =~ '(?i)S.*' return n
这将返回节点B和C.
使用=~
运算符,您可以在查询中使用正则表达式
也许你也希望快速浏览一下Neo4J Docs
如果查询只返回与works_in完全匹配的节点,则使用
MATCH (n) WHERE n.works_in = 'WinPro'
或
MATCH (n) WHERE n.designation = 'SE'
另一个想法是创建具有名称和电子邮件等属性的节点,并创建像技能(CGI,Java,WinPro)或项目之类的节点,并将它们与诸如WORKS_IN之类的关系或LOCATED_IN ...
连接起来。帕特里克