2013-01-10 95 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的這些簡短事實,您的測試幾乎是無用的,如果您想測試關係模型的數據完整性,則應該使用關係數據庫。