MongoDB Schema设计有3个表

时间:2013-12-11 03:25:03

标签: c# mongodb

我正在将一些代码从MS SQL移到MongoDb。在现有的SQLSERVER中,我有一个Profile表,一个Tag表和一个ProfileTag表。标签表包含所有可用标签,而ProfileTag表包含特定用户的标签。

我需要能够按标签和个人资料名称搜索个人资料。 所以,当我设计MongoDB Schema时,我还需要所有3个类,还是可以从列表中删除ProfileTag?我仍然试图围绕文档设计。

public class Tag {

}

public class Profile {
    public Address Address {get;set;}
    public List<Education> EducationList {get;set;}
    public List<Tag> ProfileTags {get; set;}
}

这是设计MongoDB架构的正确方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

根据我的经验,我认为您的方法是正确的。您不需要将Profile标记作为C#中的单独集合或类。它可以是简单的字符串数组。在mongodb架构中可能看起来像这样。在集合中,如果您的配置文件名称是唯一的,您可以将其用作_id,它将自动编入索引。 mongoDB还允许索引数组,因此您可以像标记一样对密钥进行索引,这将改进基于标记的配置文件搜索。所有通用标签都可以保存在另一个集合中。有一点,请记住,如果主标记已更新,您必须批量更新所有配置文件标记,因为它们嵌入在配置文件集合中

        {_id:  PROFILENAME , Tags : ["Tag1" , "Tag2" , "Tag3"] }