首页 > 解决方案 > 向查询添加附加特异性后无法检索节点的属性

问题描述

我对 cypher 很陌生,只是试图启动一些简单的查询来让自己定位。马上,我遇到了一个我觉得很奇怪的案例。

请注意,标记为personeach 的节点具有以下属性:dateOfBirth

首先询问所有标记为的节点,这些节点person由标记为的节点标识,而该节点Identifier又是标记为的节点的实例IdentifierClass

MATCH (p:person)-[:is_identified_by]->
(id:Identifier)-[:is_instance_of]->(idClass:IdentifierClass)
 RETURN p

结果如预期:

p
{
  "dateOfBirth": "11/13/2008"
}
{
  "dateOfBirth": "11/13/2008"
}
{
  "dateOfBirth": "11/13/2008"
}

现在这是我真正想要运行的查询。我们现在指定IdentifierClass必须有一个name带有 value的属性id_type_1

MATCH (p:person)-[:is_identified_by]->
(id:Identifier)-[:is_instance_of]->(idClass:IdentifierClass{name:'id_type_1'})
 RETURN p

结果是:

p
{

}
{

}
{

}

因此返回了相同数量的结果,但现在p无法访问 的属性。为什么添加这种额外的特异性会导致变量p“上游”发生变化?

标签: cypher

解决方案


此问题已解决。查询运行良好,实际上图表中有意外数据导致了这些结果。几个“人”节点缺少属性。


推荐阅读