2015-04-21 40 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" 
}