0

在我的数据库中,我有标记的产品。每个产品都有一个名为 index 的数组属性,其中包含标签中的所有单词。在 Neo4j 的最后一次更新之前,我可以使用以下不再有效的查询进行查询,我想它可能已被弃用。

MATCH (p:Product)-[:has_tag]->(tag:Tag)
WHERE ALL (x IN ['game', 'action']
WHERE x IN p.index)  RETURN p;

我得到错误

 Type mismatch: p already defined with 
 conflicting type Node (expected Collection<Any>)     

我怎样才能使这个查询工作,以便在这种情况下,我可以找到所有带有“游戏”和“动作”的产品标签?

此外,此类查询的性能如何,这是进行此类搜索的好方法,还是会变慢?

4

1 回答 1

1

不知道为什么它不适用于当前版本,但你可以这样做,

MATCH (p:Product)-[:has_tag]->(tag:Tag)
WHERE length(filter(x IN p.index WHERE x in ['game', 'action'])) = 2
RETURN p

假设索引中没有重复的标签

于 2013-10-18T19:31:41.420 回答