在 Neo4j 中何时使用属性而不是标签?

Mon*_*eck 1 neo4j cypher

我将回顾这个YouTube 教程“在现实世界中使用 LOAD CSV”。

本教程展示了如何获取 CSV(其中每一行都是针对某家银行的投诉)并将其建模为 Neo4j 字典。

执行此操作时,讲述人会在投诉节点上设置属性:

CREATE (complaint:Complaint {id: line.`Complaint ID`})
SET complaint.year= TOINT(date[2]),
     complaint.month= TOINT(date[0]),
     complaint.day = TOINT(date[1])  
Run Code Online (Sandbox Code Playgroud)

我对一个小问题感到困惑 - 是什么让这个日期信息更像是“属性”而不是标签?

是否可以对此进行建模,而不是在节点将此信息封装为标签而不是属性的情况下?在什么时候您需要其中之一而不是另一个?

cyb*_*sam 5

标签和属性是非常不同的东西。

Aproperty属于节点或关系,并且具有名称和值。

节点label在概念上类似于“类名”,并且没有值。

因此,谈论将日期值放入“标签”中是没有任何意义的。您只能为属性赋值。

但请注意,人们经常使用标签名称(例如“Foo”)作为“具有该Foo标签的节点”的简写。例如,他们可能会说“将日期存储在 Foo 中”,而实际上的意思是“将日期存储在带有标签 Foo 的节点的适当属性中”。也许这就是造成混乱的原因。