2015-04-21 59 views
0

我是新來的mongodb,所以請裸露在我身邊。如果我有兩個集合:用戶和事件。一個用戶可以有許多事件......MongoDB映射Java中的引用關係

Users 
{ 

    Username: "Mark", 
    Password: "1234567" 
} 

Events 
{ 
    EventTitle: "Skiing", 
    EventDate: "20/2/2015" 
} 

我需要一個事件與基於他在Java的用戶名​​的用戶相關聯。所以我所做的就是搜索的用戶....

BasicDBObject query = new BasicDBObject("Username", "Mark"); 
DBCursor cursor = table.find(query); 

和我搜索了基於其標題事件......

BasicDBObject query = new BasicDBObject("EventTitle", "Skiing"); 
DBCursor cursor = table.find(query); 

我只需要知道如何在事件關聯與用戶一起,假定只有一個事件和一個用戶將來自搜索查詢。互聯網上缺乏例子。

+1

查看示例的快速瀏覽,http://mongodb.github.io/mongo-java-driver/2.13/getting-started/quick-tour/。由於用戶有很多事件,因此您應該更新用戶記錄並將所有事件附加到此記錄中,這樣您可以搜索用戶以從他的事件列表中添加和刪除事件 – faljbour

回答

1

在使用NoSQL數據庫時,請停止思考SQL。停止正常化數據。不要試圖使數據關係。重複數據非常好。有時需要。

可以例如放Username,或User ObjectId,或兩者在Event文件陣列中任一,或創建每User/Event的組合的一個Event文檔。

總而言之,它確實取決於您將運行的其他查詢。

1

您可能想要創建另一個將要存儲這樣的關係的集合,首先爲兩個集合添加一個字段「id」(這總是一個好習慣),然後您可以通過這些ID將一個集合相互關聯。

Users 
{ 
    id: "001", 
    Username: "Mark", 
    Password: "1234567" 
} 

Events 
{ 
    id: "001", 
    EventTitle: "Skiing", 
    EventDate: "20/2/2015" 
} 

Users_Events 
{ 
    user_id: "001", 
    event_id: "001" 
}