给定以下架构,中间的节点称为业务,卫星节点称为BusinessType。这种关系是一对多,因为一家企业有许多BusinessType节点。我要做的是获取BusinessType等于一组代码的所有业务节点。问题是我要返回的业务节点只有一部分条件。例如:
MATCH (business:Business {uuid: 'f872e7d4-1105-11ea-9461-4cedfb791f65'})-[r:BUSINESS_HAS_TYPE]->(bt:BusinessType)
return *返回下面的结果。

MATCH (business:Business)
MATCH (business)-[r:BUSINESS_HAS_TYPE]->(bt:BusinessType)
WHERE bt.slug = 'rail-doors' AND bt.slug = 'pergolas'
RETURN business我在上面的查询中要做的是获取所有业务节点,其中它们的BusinessType与“rail doors”和“pergolas”匹配。由于某种原因,这将返回null,尽管很明显存在一个潜在的匹配,如前面的查询所示。
我也尝试过使用['rail-doors','pergolas'],但这显然是错误的,因为它会返回任何具有这两者之一的业务。
欢迎任何意见
发布于 2019-12-06 09:55:33
对于同一属性,单个节点不能同时具有两个不同的值。您需要一个跨所有相关:BusinessType节点查找每个所需值的查询。
请尝试以下查询:
MATCH (business:Business)-[:BUSINESS_HAS_TYPE]->(bt:BusinessType)
WITH business, COLLECT(bt.slug) AS slugs
WHERE ALL(x IN ['rail-doors', 'pergolas'] WHERE x IN slugs)
RETURN business https://stackoverflow.com/questions/59205584
复制相似问题