0

由于 mongoDB 不支持外键,我读过您可以将其用于 DBReF。现在我想测试一下这种关系。

2个集合是

db.professor.insert({"_id": 1122, "Name":"Heinrich","Rang": "C3","Raum":"D123"}) db.assistent.insert({"_id": 2244,"Name":"Schmidt","Fachgebiet":"Neuronale Netze","Boss":{"$ref":"professor","$id":1122}})

第一个问题,但它不应该是错误的 id 可能假设的参考。如果我使用正确的 ID $ id 输入,我该如何测试参考?

背景是我检查了mongoDB的数据完整性特性!有没有人有关于 mongoDB 和数据完整性的资源

4

1 回答 1

1

MongoDB 的集合间数据完整性为零。这不是 MongoDB 工作方式中的错误,也不希望这种行为应该改变。

不具有集合间数据完整性是其作为 NoSQL ( http://en.wikipedia.org/wiki/NoSQL ) 产品的核心特性之一,这种行为通常与此相关联(据说它不必如此)。

当然,这与一般数据完整性无关,而是与服务器端关系的级联和引用有关。

DBRef ( http://docs.mongodb.org/manual/applications/database-references/ObjectId ) 与将 a 保存到文档中没有什么不同。唯一真正的区别是它是一个对象的对象,它还存储一个属性来容纳集合名称。DBRef 没有什么特别之处,只是它预先捆绑了大多数(如果不是全部)语言的 MongoDB 驱动程序作为帮助程序,允许您查询应用程序中的另一行。

许多人确实混淆了 DBRef 的用途,但我向您保证,它并没有什么特别之处。

所以没有检查你是否输入错误ObjectId,关系上没有级联,MongoDB中没有“外键”行为。

任何和所有关系完整性都来自您的应用程序及其以防止数据中出现任何问题的方式工作的能力。这适用于伪关系的插入和级联。

考虑到有关 MongoDB 的这些简短事实,您的测试几乎没有用,如果您想测试关系模型的数据完整性,您应该使用关系数据库。

于 2013-01-10T21:23:43.817 回答