如何通过关联多个其他节点来添加节点

How to llst nodes by relating multiple other nodes

我是 Neo4J 的新手,如果问题标题不好,我深表歉意,但我想要一个节点(phone)到另一个节点(颜色),这是 [=13= 可用的颜色].我需要列出 phones,它们有蓝色和紫色两种颜色,不能单独使用。以下是我尝试过的内容,但显示没有进行任何更改。你不能用AND和WHERE来声明两个节点吗?

MATCH (p:Phone)-[r:AVAILABLE]->(c:Colour)
WHERE c.name="blue" AND c.name="purple"
return p

您的查询不会成立,因为 c.name 不能同时是蓝色和紫色。这就是您获得蓝色和紫色手机的方式

  1. Get all phones that has colour blue or purple
  2. Collect all distinct colours as a set
  3. Check that the each item on this set(colours) have blue or purple colour
WITH ["blue", "purple"] as blue_purple 
MATCH (p:Phone)-[r:AVAILABLE]-(c:Colour) 
    WHERE c.name in blue_purple
WITH blue_purple, p as phone, collect(distinct c.name) as colours
    WHERE size([co in colours WHERE co in blue_purple]) = 2
RETURN phone