mongoDB DBRef作为外键测试 - 查询

时间:2013-01-10 19:19:03

标签: mongodb dbref nosql

因为mongoDB不支持外键,所以我读过你可以用于DBReF。现在我想测试这种关系。

这两个系列是

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和数据完整性的来源

1 个答案:

答案 0 :(得分:1)

MongoDBs集合间数据完整性为零。这不是MongoDB工作方式的错误,也不希望这种行为发生变化。

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

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

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

许多人确实混淆了DBRef的目的,但我向你保证,没有什么特别之处。

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

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

考虑到有关MongoDB的这些简要事实,您的测试几乎无用,如果您希望测试关系模型的数据完整性,则应使用关系数据库。