2011-07-15 142 views
1

我是一名java程序員,我想在我的項目中使用MongoDB。我知道MongoDB是一個文檔數據庫,但有沒有辦法在這個數據庫中存儲更多的記錄字段?我可以在MongoDB中存儲關係數據庫結構嗎

例如我有一個表有4個屬性(即列)名稱地址年齡和dob,所以我可以使用或轉換此結構以適應MongoDB?

+0

**主持人備註** _此問題下的評論已被刪除,因爲對話退化爲比信號更多的噪音。請保持評論禮貌,建設性和話題._ –

回答

7

當然。

MongoDB是一個基於文檔的數據庫管理系統。如果您熟悉JSON格式,則Mongo以非常相似的方式存儲數據。例如,在一個蒙戈數據庫中的樣本文件可以是這樣的:

Person { 
    Name: 
    { 
     First : "John" 
     Last : "Smith" 
    } 
    Address : 
    { 
     City : "Chicago" 
     State : "Illinois" 
     Street : "30 S. Michigan Avenue" 
    } 
} 

正如你可以看到蒙戈支持嵌套的領域,所以某個領域可以包含一個或多個屬性。它本身不是關鍵/值,因爲它可以無限地嵌套文檔。但是,請注意,並非集合中的所有文檔都必須具有相同的結構。這是Mongo最大的優勢,但如果你不小心的話,它可以扭轉並咬你。

+0

謝謝本。你知道任何其他的替代MongoDB的不是強制AGPL。 – Vivek

+2

只有MongoDB數據庫服務器本身在AGPL下獲得許可 - 因此,如果您對MongoDB數據庫代碼進行了任何更改,則需要將這些更改提交回主代碼庫。所有官方驅動程序(包括[Java驅動程序](https://github.com/mongodb/mongo-java-driver/blob/master/LICENSE.txt))都是根據Apache許可證2.0獲得許可的。 – dcrosta

1

實際上,MongoDB不是傳統的鍵/值數據庫,而是文檔數據庫。文檔是一個JSON對象,它可以包含任意數量的字段,甚至嵌套的文檔。所以是的,您可以輕鬆地爲每條記錄存儲多個字段。

3

只需添加到正確的(+1)的答案與前兩次海報...

有「關係數據庫結構」和存儲附加屬性之間的差異。關係意味着你正在模擬數據庫中事物之間的關係,比如客戶和每個客戶擁有的訂單。

MongoDB允許您存儲具有許多屬性的文檔。它不提供很多支持文件之間的管理關係。

+0

MongoDB允許您使用官方驅動程序(以及許多社區提供的驅動程序)知道如何解釋以查找所引用的文檔的[數據庫引用](http://www.mongodb.org/display/DOCS/Database+References) 。但是,數據庫本身不處理DBRefs(即不加入JOIN)。 – dcrosta

相關問題