2012-08-30 55 views
1

我是mongodb的新手。我需要鏈接兩個集合,就像在關係數據庫中使用主鍵和外鍵概念。mongodb數據庫參考

我知道mongodb不支持連接。

comments 
{ uid:12345, pid:444, comment="blah" } 
{ uid:12345, pid:888, comment="asdf" } 
{ uid:99999, pid:444, comment="qwer" } 

users 
{ uid:12345, name:"john" } 
{ uid:99999, name:"mia" } 

在評論集合中,uid - >主鍵,在用戶中,uid - >外鍵。

如何在mongodb中插入集合時解決這種關係? 如何參考?

你能給我發送mongodb命令嗎?

+0

在MongoDB集合中不能加入。你試圖提供什麼功能? –

+0

我可以知道在mongodb中鏈接(dbref)的目的是什麼嗎?這不是爲了確保主要和外部的關鍵關係嗎?我的功能是通過加入這兩個集合來查詢字段? – Ramya

+0

它不能確保任何東西。 DBRef完全符合名稱的含義。它爲文檔提供跨數據庫交叉引用。它僅僅是一個存儲約定,不受任何服務器功能的支持。 –

回答

1

使用MongoDB時,常見的新手錯誤就是將它看作是關係數據庫。

您通常不需要在MongoDB中擁有自己的ID,因爲每個文檔都自動具有_id字段(這是一個GUID)。

要引用MongoDB中的另一個實體,可以使用DBRef對象。所以每個評論文檔都應該有一個「作者」字段,它是用戶集合中文檔的DBRef。或者,您可以使用您想要引用的對象的GUID作爲「作者」的值。

查看http://docs.mongodb.org/manual/applications/database-references/瞭解詳情。

關於將文檔及其引用的文檔放在一起:加載文檔時必須在應用程序級別執行此操作。 MongoDB Java驅動程序中的DBRef類具有fetch()方法,該方法可自動獲取其引用的文檔。這使得這實現起來相當微不足道。