2013-08-20 133 views
0

我必须从各种社交媒体保存用户的不同配置文件。例如 用户可能有1个Facebook和2个twitter配置文件。如果我保存每个配置文件 它被作为一个新的文档插入到不同的集合,如Facebook和Twitter是一个集合,我将如何将这个文档与另一个关联。 我在mongodb中使用了点符号。如果我将Facebook和twitter个人资料关联到同一个用户,那么意味着您可以轻松获取记录。我将如何设计架构?还有how would i avoid duplication?是否有可能使用facebook id twitter id作为唯一?我是mongoDB的新手。我将如何加入不同系列的文档Mongo Db架构

回答

1

这是一个ruby实现,但希望能够将架构逻辑转换为您的java代码。

class User 
    has_one :facebook_profile 
    has_one :twitter_profile 
end 

class TwitterProfile 
    belongs_to :user 
end 

class FacebookProfile 
    belongs_to :user 
end 

你可以像这样的藏品强制唯一索引:

db.twitter_profiles.ensureIndex({user_id: 1 }, {unique: true}) 
db.facebook_profiles.ensureIndex({user_id: 1}, {unique: true}) 

您可以使用您想在用户级别强制唯一性的任何领域。

希望有所帮助。

+0

很好。但如何保存后执行索引? – jackyesind

+0

您可以指定{unique:true,dropDups:true},它将添加索引并删除任何与索引冲突的文档。 – davissp14

+0

这是否回答了您的问题? – davissp14