Orientdb 在插入记录之前,类是否必须存在?

Orientdb 在插入记录之前,类是否必须存在?,orientdb,Orientdb,我来自Neo4j,正在评估OrientDB,我有一个关于类的快速问题-在插入记录之前它们必须存在吗?也就是说,在Neo4j中有“MERGE”命令,如果节点不存在,它将更新或创建节点。类似乎大致相当于Neo4j的标签,如果执行合并时标签不存在,则会创建标签。OrientDB中是否有类似的功能?当前,当我尝试插入一个类不存在的记录时,OrientDB抛出一个异常,“在数据库中找不到类” 我一直在阅读文档,试图了解各种可用的数据模型,但在这个问题上我找不到任何明确的信息。我尝试的一件事是添加一个集群,

我来自Neo4j,正在评估OrientDB,我有一个关于类的快速问题-在插入记录之前它们必须存在吗?也就是说,在Neo4j中有“MERGE”命令,如果节点不存在,它将更新或创建节点。类似乎大致相当于Neo4j的标签,如果执行合并时标签不存在,则会创建标签。OrientDB中是否有类似的功能?当前,当我尝试插入一个类不存在的记录时,OrientDB抛出一个异常,“在数据库中找不到类”

我一直在阅读文档,试图了解各种可用的数据模型,但在这个问题上我找不到任何明确的信息。我尝试的一件事是添加一个集群,然后插入一个不存在类的记录。这是有效的,在OrientDB Studio中,在“DB”下,我看到集群的记录数等于“1”;但是,新记录的类不会出现在“Schema”下


如果无法创建这种类型的动态类,是否可以检查模式中是否存在类,如果不存在,则创建类,然后继续创建记录?另一个问题是,如果可以接受,那么这样做是否好,或者我是否应该始终手动定义模式?

如果您使用
创建
命令之一,那么对象将被放置在默认类中;例如:

CREATE VERTEX
Created vertex 'V#9:0 v1' in 0.047000 sec(s).
(在本例中,类为
V

当然,如果您使用
插入到…
表单中,那么您必须指定一个类

因此,您的第一个问题可能归结为是否可以更改OrientDB顶点或边的类

可以更改顶点的父类--请参见 --但有一些重要的警告

要测试类是否以编程方式存在,请参见此SO条目:

这给出了一个Java示例,但是使用其他支持的语言也可以使用类似的方法

至于动态更改实体类的智慧——也许安全的答案是,如果您可以使用属性标签实现任何您想要的,那么就使用标签