如果属性有更多信息而不是原始类型,如何映射?

时间:2017-10-23 16:52:18

标签: neo4j cypher

如果属性有更多信息而不是原始类型,如何映射?

示例:

(Label :{ measured_depth: 'int'}) 

如果measured_depth分配了单位系统(英语)和单位代码(ft),该怎么办?

这是一个可行的案例吗?

1 个答案:

答案 0 :(得分:0)

属性还可以包含更复杂的数据结构,称为集合(类似于python列表),但不包含映射(类似于python字典)。对于您的用例,您可能需要创建两个不同的属性。例如,如果您有一个以英寸或厘米为单位测量的属性的节点,则可以将数据存储为如下所示的映射。

CREATE (n:SomeLabel {depth_val: 123, depth_unit: "cm", name: "Something"})

虽然当然,你可能想要参数化。您还应该了解+=运算符,它允许您将映射的所有属性分配到节点上。我在下面提供了一个示例作为参数。

如果在浏览器中,您可以设置如下参数:

:param measurement: {name:"Something", depth_val: 123, depth_unit: "cm"}

然后执行以下操作。这相当于第一个查询。

CREATE (n:SomeLabel) SET n += $measurement

另一种方法是将您的值存储为一个集合,其中第0项是您的值,下一项表示单位,但是,由于集合必须存储相同类型的值,您很可能必须设计一些代码使用整数,这是非常理想的。如果具有太多属性可能会导致问题(例如,如果每个项目有多个度量),则可以根据需要将每个观察或度量存储为新节点。