4

这是否可以将节点属性作为 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 绑定的方法吗?

谢谢你的帮助

4

2 回答 2

4

这违背了属性的原则。为什么不直接在节点上设置 JSON 元数据中的属性?

但要回答你的问题:

不,cypher 不了解 JSON。

于 2013-01-13T16:21:47.903 回答
4

我们将整个 Node 视为 JSON blob。由于 Neo4j 不支持分层属性,我们在保存时将 JSON 扁平化为分隔的属性名称,并在读取时将它们展开。然后,您可以在(例如)属性名称“foo.bar.baz”上形成 Cypher 查询。查询往往看起来有点古怪,因为您需要使用单反引号来引用它们,但它确实有效。

于 2013-01-15T17:52:16.107 回答