问题描述
我想知道如何在一种关系上制作反向标签。我知道在Neo4j中不建议具有双向关系。我想创建类似以下的内容。
class Firewall
{
protected $logger;
protected $filters;
public function __construct(Logger $logger,Filter ...$filters)
{
$this->logger = $logger;
$this->filters = $filters;
}
}
我想为诸如IsAbbreviatedAs之类的关系添加反标签。
解决方法
总是在相反的方向上创建一对关系是不好的习惯,因为这完全是不必要的-因此不必要地增加了数据模型和代码的复杂性,并使所需的数据存储量增加了一倍关系。
假设您只创建了一个方向为一个类型(例如IsExpandedTo
)的关系:
CREATE (:Acronym {value: 'MIT'})-[:IsExpandedTo]->(:Term {value: 'Massachusetts Institute of Technology'})
然后,要扩展首字母缩写词,您可以执行以下操作:
MATCH (acronym:Acronym)-[:IsExpandedTo]->(term)
WHERE acronym.value = 'MIT'
RETURN term.value
而且,要获得首字母缩写(通过相反的方向),可以执行以下操作:
MATCH (acronym)-[:IsExpandedTo]->(term:Term)
WHERE term.value = 'Massachusetts Institute of Technology'
RETURN acronym.value