2013-01-10 98 views
0

因为mongoDB不支持外键,我读过你可以用于DBReF。现在我想要测试这种关系。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和数据完整性的来源

回答

1

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

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

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

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

许多人都混淆了DBRef的目的,但我向你保证没有什么真正的特殊之处。

因此,没有检查是否存在错误的ObjectId,并且关系中没有级联,并且MongoDB中没有“外键”行为。

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

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