0

在 neo4j 中,我们可以使用各种属性添加节点和关系

node.setProperty("NodePropertyName",NodePropertyValue)
relationship.setProperty("EdgePropertyName",EdgePropertyValue)

有什么方法可以使用非原始数据类型,如 MAP 、 Array 或用户定义的对象 asNodePropertyValueEdgePropertyValue

或者我是否需要将所有值MAP<>单独作为Nodeor的单独属性提供Relationship

我尝试使用

node.setProperty("USER_PROPERTIES", GraphNode.getNodeproperties());
where,
GraphNode.getNodeproperties() returns MAP<String,Double>

但这给了我一个错误:

 java.lang.IllegalArgumentException: Unknown property type on: {Property1=0.0, Property2=0.0, Property3=0.0, Property4=0.0, Property5=0.0, Property6=0.0, Property7=0.0}
4

2 回答 2

2

有什么方法可以使用非原始数据类型,如 MAP 、 Array 或用户定义的对象作为 NodePropertyValue 和 EdgePropertyValue ?

Neo4J 允许您存储一个数组String,或者一个原始数据类型的数组。

不支持地图(尚),但另一种方法是将地图存储为 JSON 结构(使用GSONJackson),甚至使用XStream存储为 XML 结构。

于 2013-02-27T09:25:19.043 回答
0

您确实只能将原始值存储为属性。如果您想存储一组值(并且如果您使用的是 Spring),那么DynamicPropertiesContainer可能是一种选择。如果要存储自定义对象,可能需要创建一些相关节点。使用createRelationshipTo(Node otherNode,RelationshipType type)来完成此操作。

于 2013-02-27T08:47:37.883 回答