Neo4j - 同一标签的查询问题和一个属性相同

时间:2014-06-11 05:14:01

标签: neo4j nodes labels

我在查询具有一个相似属性,一个不同属性和具有相同标签的两个节点时遇到问题。对于一个属性,两个节点之间的属性是相同的,即两者都具有名为"Name"的属性,并且两者具有相同的值("Data Storage")。对于名为"Note"的其他属性,它们具有不同的值。两者都共享名为"Issue"的相同标签。当我使用下面的查询时,我得到两个节点。

match (n:Issue) where n.name="Data Storage" return n;

但是,当我使用以下查询查询...

match (n:Issue) where n.name="Data Storage" and n.note="xxxx" return n;

...它仅适用于其中一个节点而不适用于另一个节点。我试过创建一个没有查询的节点,它似乎工作正常。但我也用不同的标签做了。这是一个无法查询具有相同标签并共享至少一个公共属性的节点的错误吗?

2 个答案:

答案 0 :(得分:2)

match (n:Issue) where n.name="Data Storage" and n.note="xxxx" return n;

将匹配所有带有标签Issue的节点," name" property ="数据存储"和"注意"的值property =" xxxx"。

正如您所描述的那样,2个节点的note属性值各不相同。匹配的xxxx是唯一可以返回的。 这个查询的目标是什么?

答案 1 :(得分:0)

如果这是你真正的问题。

查询具有相同标签并共享至少一个公共属性的节点?

你可以为每个属性尝试这个,并在所有

上进行联合
MATCH (n:Issue)
WITH n.name, collect(n) as nodes, count(*) as cnt
WHERE cnt > 1
RETURN nodes

或者性能较差

MATCH (n:Issue)
WITH n
MATCH (m:Issue)
WHERE m<>n AND (n.name = m.name OR n.note = m.note)
RETURN n,m