2013-01-22 76 views
0

我想獲得關於做一些MongoDB數據設計的一些反饋。我從來沒有真正使用它,所以如果我的設計看起來瘋狂,請讓我知道。在Mongoid中引用內嵌文檔

我有一個用戶的概念和用戶執行的活動。需要爲用戶和他們執行的活動提供一個地址,並且他們執行的活動對該用戶是唯一的。由於活動永遠不會重疊,地址也不應該。

我最初的數據結構看起來是這樣的:

User : { 
    # User data, 
    address : { 
    # address data 
    }, 
    address : { 
    # address data, 
    home : true 
    }, 
    activity : { 
    # activity data, 
    _address_id: #referenced address within user 
    }, 
    activity : { 
    # activity data, 
    _address_id: #referenced address within user 
    }, 
} 

有該活動可能已在國內進行的假設。

有沒有更好的方法來做到這一點?我應該在用戶的活動中嵌入地址嗎?我應該完全從用戶模型中刪除它嗎?

這一切都在一起使用Mongoid的Rails應用程序。

回答

1

您的數據結構非常好 - 面向文檔的數據庫旨在以這種方式使用。你不應該在每個活動中重複地址,因爲你最終會浪費空間。

User : { 
    # User data, 
    address_<id> : { 
    # address data 
    }, 
    address_<id> : { 
    # address data, 
    home : true 
    }, 

    activity : { 
    # activity data, 
    _address_id: #referenced address within user 
    }, 
    activity : { 
    # activity data, 
    _address_id: #referenced address within user 
    }, 
} 

剛好有兩件事情,你需要照顧:
1.不要檢索整個文檔的單個活動
2.確保文件不超過最大尺寸(或重新編譯)