【发布时间】:2017-08-08 21:27:06
【问题描述】:
好的,让我来设置一下:我创建了一个 Neo4J 数据库,其中北美的每个车辆装饰都作为车辆节点(每个车辆节点都有一个 :Vehicle 标签)。现在,我还创建了 22 个其他标记节点来描述一个特征。例如,我有一个“:MDL”特性节点、一个“:YR”特性节点、一个“:DRIVE”特性节点和一个“:DIV”特性节点。每个特征节点都有一个名为“value”的属性。
所以,如果我想查找所有配备 4WD 的 2016 款雪佛兰车型,我的 Cypher 查询如下:
MATCH
(v:Vehicle)--(:DIV{value:"Chevrolet"}),
(v)--(:DRIVE{value:"4WD"}),
(v)--(:YR{value:"2016"}),
(v)--(model:MDL)
return distinct(model.value)
而且,这成功返回了提供 4WD(而不是 AWD)的 8 款雪佛兰车型,如下所示:
"Silverado 3500HD"
"Colorado"
"Silverado 2500HD"
"Silverado 1500"
"Silverado 3500HD Chassis"
"Tahoe"
"Suburban"
"Suburban 3500HD"
我的问题是查看个人资料计划,我认为这不是最有效的方法。因为基本上 Cypher 是独立地制作每个匹配模式,然后合并结果。我试图让 Cypher 一步完成这一切。有人对如何提高效率有任何建议吗?
【问题讨论】: