MongoDB映射在Java中引用的关系

时间:2015-04-21 22:38:47

标签: java mongodb mongodb-query 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);

我只需要知道如何将该事件与用户相关联,假设搜索查询只会产生一个事件和一个用户。互联网上缺少例子。

2 个答案:

答案 0 :(得分: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"
}

答案 1 :(得分:1)

使用NoSQL数据库时,请不要考虑使用SQL。停止规范化数据。不要试图使数据关系。复制数据非常好。有时需要。

例如,您可以在Username文档中将User ObjectIdEvent或两者放入数组中,或者按Event创建一个User文档/ Event组合。

总而言之,这实际上取决于您将要运行的其他查询。