在Neo4j中,将字符串数组存储为节点属性的最佳方法是什么?

12

我有一个需求,需要将一个属性键存储多个值。如何在Neo4j中将它们作为属性存储呢?

例如:人节点具有 'name'、'age' 和 'interests' 之类的属性,其中 'interests' 属性可以包含多个字符串(字符串数组)。

最佳的存储 'interests' 的方法是什么?我认为不想通过添加更多的节点来复杂化这个问题。相反,我想把所有属性都保留在同一个人节点中。

此外,如果我能通过 'interests' 属性中的任何一项搜索到一个人节点就更好了。

是将其作为由某些特殊字符分隔的一个字符串进行存储吗?还是将其作为属性的字符串数组进行存储?如果是后者,我该如何实现呢?

谢谢


1
你考虑过阅读手册吗?这里是关于Cypher集合的部分 - http://neo4j.com/docs/stable/syntax-collections.html - Dave Bennett
谢谢,看起来我可以将值列表进行JSON编码,并将其存储为属性的一个值。是否可以通过属性中的一个值进行搜索(或匹配)? - Krishna Shetty
1
你当然可以将JSON存储为字符串,但是这样做就无法在搜索时充分利用数据库。正如@Brian所说,如果您要在“兴趣”上进行搜索,最好将它们作为模型中的一等公民。 - Dave Bennett
1个回答

5
您可以将字符串数组存储为属性,如果您只想在使用特定的Person节点时简单地查看兴趣列表,那么这可能是我建议的做法:
如果您想按兴趣查找人员,我强烈建议考虑将它们存储为节点。使用MERGE Cypher命令可以很容易地管理它们,并且应该更具性能。详情请参见:http://neo4j.com/docs/stable/rest-api-property-values.html#_arrays

Brian,我有类似的问题。例如,我有两种类型:Country和Person。Country类型的对象具有参数“GDP”。该参数是一对数组(年份,GDP)。Person类型的对象具有参数weight。该参数是一对数组(年份,重量)。我有不同的关系之一,例如PRESIDENT,具有开始和结束日期。如何使用这些组合参数进行搜索,例如查找在总统任期内担任总统并且体重最轻的人或者我在哪里可以阅读有关我的任务的信息? - Struchkov Vladimir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接