是否可以将节点属性作为json原始字符串并使用cypher对其进行过滤? 我有一个节点,其中包含一些已定义的属性和元数据(json原始字符串)。 我想选择或过滤那些元数据属性。 这是这样的:
START movie=node:TYPE_INDEX(Type = 'MOVIE') // Start with the reference
MATCH movie-[t:TAG]->tag
WHERE collect(movie.Metadata).RatingPress > 3
RETURN distinct movie.Label
元数据是这样的:
{"RatingPress" : "0","RatingSpectator" : 3"}
我原本希望使用collect函数来调用这个属性:
collect(movie.Metadata).RatingPress
但是,当然它失败了......
这是一种将某个json字符串从一个节点属性与cypher绑定的方法吗?
感谢您的帮助
答案 0 :(得分:4)
这违反了财产原则。为什么不直接在节点上设置JSON元数据中的属性?
但要回答你的问题:
不,cypher不了解JSON。
答案 1 :(得分:4)
我们将整个Node视为JSON blob。由于Neo4j不支持分层属性,因此我们在保存时将JSON展平为分隔的属性名称,并在读取时将它们展开。然后,您可以在(例如)属性名称“foo.bar.baz”上形成Cypher查询。查询往往看起来有点时髦,因为你需要使用单引号引用它们,但它有效。