Neo4j 如何查找与开始节点列表相关的节点

Neo4j 如何查找与开始节点列表相关的节点,neo4j,cypher,Neo4j,Cypher,我有一个开始节点(InGridents)的列表,我想找到所有配方,它们都指定了InGridents(下面的代码示例)。 我正在尝试找到所有包含InGridinent2、InGridinent3、InGridinent4的食谱 我使用这个代码 MATCH result=(n:Ingridient)-[r:RELATED]->(m:Recipe) WHERE n.name IN ['Ingridient2', 'Ingridient3','Ingridient4'] RETURN resu

我有一个开始节点(InGridents)的列表,我想找到所有配方,它们都指定了InGridents(下面的代码示例)。 我正在尝试找到所有包含InGridinent2、InGridinent3、InGridinent4的食谱

我使用这个代码

MATCH result=(n:Ingridient)-[r:RELATED]->(m:Recipe)
  WHERE n.name IN ['Ingridient2', 'Ingridient3','Ingridient4']
RETURN result
但此代码返回所有只包含一个IngRiient2或IngRiient3的配方,以此类推

我的问题是如何找到含有指定成分的食谱。 还附上了一个示例链接


下面是一个密码,带有注释,用于说明您想要做的事情。可以使用WHERE ALL(…)对整个集合进行验证

// Match all Recipe and their ingredients
MATCH (n:Ingridient)-[r:RELATED]->(recipe:Recipe)

// Collect ingredients into a collection
WITH COLLECT(n.name) as ingredients, recipe

// Filter where recipe uses all our ingredients
WHERE ALL(part in ['Ingridient2', 'Ingridient3','Ingridient4'] WHERE part IN ingridients)

// Return valid recipes
RETURN recipe

是的,你是我的救星。但是正确的输入法(应该是成分)@BekerovArtur你在问题中使用了“Ingridient”,所以我保持了密码与=P的一致性
// Match all Recipe and their ingredients
MATCH (n:Ingridient)-[r:RELATED]->(recipe:Recipe)

// Collect ingredients into a collection
WITH COLLECT(n.name) as ingredients, recipe

// Filter where recipe uses all our ingredients
WHERE ALL(part in ['Ingridient2', 'Ingridient3','Ingridient4'] WHERE part IN ingridients)

// Return valid recipes
RETURN recipe