【发布时间】:2018-06-22 16:31:36
【问题描述】:
我正在使用 Neo4j 社区 3.4.1。
我有一个看起来像这样的图表: Data Model Graph
绿色节点是列表。
顶部列表是列表一,底部列表是列表二
顶部是壁炉,底部是停车场
我正在寻找一个 Cypher 查询,该查询从特定列表开始,并找到满足该 SavedSearch 的所有条件的所有 SavedSearches。
例如,Listing Two 将满足上述SavedSearch,因为它与 SavedSearch 的两个条件都有关系。
但是,Listing One 不符合条件,因为该列表仅满足 SavedSearches 条件之一。
我有以下查询,它从列表开始并匹配任何具有直接路径的已保存搜索,但搜索不会检查已保存搜索中的所有路径是否都连接回来。因此,以下查询将返回清单一和清单二的 SavedSearch:
MATCH (l:Listing {list_id: 'one'})
MATCH (l)-[:ATTRIBUTE]
->(:Value {field: 'features', value: 'Fireplace'})
<-[:CONDITION]
-(s:SavedSearch)
RETURN s
有没有办法匹配 SavedSearch,然后追溯搜索路径以查看是否所有 CONDITION 路径都返回到同一个列表?
我想将其作为直接的 Cypher 查询来执行,但如果这样做更容易且效率更高,我愿意执行自定义过程并使用 Java API。
【问题讨论】:
标签: neo4j cypher graph-databases