Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 文档数据库中的继承?_Mongodb_Cassandra_Couchdb_Nosql - Fatal编程技术网

Mongodb 文档数据库中的继承?

Mongodb 文档数据库中的继承?,mongodb,cassandra,couchdb,nosql,Mongodb,Cassandra,Couchdb,Nosql,我很好奇,因为我在pdf“[noSql]权威指南”和“开始[noSql]”中搜索了“继承”一词,但什么也没找到?我错过什么了吗?因为我正在使用hibernate和mysql进行tablePerHierarchy继承,所以在[noSql]中是否会因为某种原因而被弃用 (将[noSql]替换为您喜欢的“不仅仅是sql”数据库)我知道这个答案有点晚了,但是对于MongoDB,您可能会看到一些稍微不同的东西 Mongo是无模式的,因此“tablePerHierarchy”的概念不一定有用 假设如下 cl

我很好奇,因为我在pdf“[noSql]权威指南”和“开始[noSql]”中搜索了“继承”一词,但什么也没找到?我错过什么了吗?因为我正在使用hibernate和mysql进行tablePerHierarchy继承,所以在[noSql]中是否会因为某种原因而被弃用


(将[noSql]替换为您喜欢的“不仅仅是sql”数据库)

我知道这个答案有点晚了,但是对于MongoDB,您可能会看到一些稍微不同的东西

Mongo是无模式的,因此“tablePerHierarchy”的概念不一定有用

假设如下

class A
  property X
  property Y
  property Z

class B inherits from A
  property W
在RDMS中,您可能会遇到类似的情况

table A: columns X, Y, Z
table B: columns X, Y, Z, W
但是MongoDB没有模式。因此,您不需要以这种方式构造数据。相反,您将拥有一个包含a或B(或C…)类型的所有对象(或“文档”)的“集合”

因此,您的集合将是一系列如下所示的对象:

{"_id":"1", "X":1, "Y":2, "Z":3}
{"_id":"2", "X":5, "Y":6, "Z":7, "W":6}
您会注意到,我将类型A的对象存储在类型B的对象旁边。MongoDB使这非常容易。只要从集合中拉出一个文档,它就“神奇地”拥有所有适当的字段/属性

但是,如果您有“数据对象”或“实体”,则可以通过添加类型来简化您的工作

{"_id":"1", "type":"A", "X":1, "Y":2, "Z":3}
{"_id":"2", "type":"B", "X":5, "Y":6, "Z":7, "W":6}

这使得编写用于加载对象的factory类变得更加容易。

这是一个非常老的问题,但由于我在这里结束了讨论,我想添加一个2017年的更新。
如果您使用连接到MongoDb,您可能需要签出:

鉴别器是一种模式继承机制。它们使你能够 在同一个模型之上有多个模式重叠 底层MongoDB集合

起初,文档对我来说有点模糊,这可能是一个更好的理解想法的地方