Asp.net MVC3和x2B;MongoDB架构:将模型直接存储到数据库?

Asp.net MVC3和x2B;MongoDB架构:将模型直接存储到数据库?,asp.net,asp.net-mvc-3,mongodb,model,viewmodel,Asp.net,Asp.net Mvc 3,Mongodb,Model,Viewmodel,我目前正在使用mongodb开发一个mvc3应用程序。我很不确定该如何建造这座建筑。例如,我的应用程序有一个页面,用于管理注册用户的用户配置文件(如姓名、电子邮件、枚举组合框中公开的某些属性)。因此,我有一个ManageProfileModel.cs,其中包含要管理的所有属性。在mongodb中使用数据的正确方式是什么?我应该将ManageProfileModel数据存储在mongodb中,还是必须添加一个包含诸如User.cs、Invoice.cs等域类的附加层。。。并将这些对象存储在mong

我目前正在使用mongodb开发一个mvc3应用程序。我很不确定该如何建造这座建筑。例如,我的应用程序有一个页面,用于管理注册用户的用户配置文件(如姓名、电子邮件、枚举组合框中公开的某些属性)。因此,我有一个ManageProfileModel.cs,其中包含要管理的所有属性。在mongodb中使用数据的正确方式是什么?我应该将ManageProfileModel数据存储在mongodb中,还是必须添加一个包含诸如User.cs、Invoice.cs等域类的附加层。。。并将这些对象存储在mongodb中(这些对象正在创建的模型中使用)

我这样问是因为管理用户配置文件的模型不一定类似于用户(域)对象。我的第一种方法是将我的(视图)模型直接存储在mongodb中。我不确定在以后获得(一致的)数据是否那么容易


谢谢

我会将模型直接存储在Mongo中,就像您的大多数数据一样。我相信您已经知道这一点,但Mongo专注于非规范化,因此它不同于希望您规范化数据的传统关系数据库

因此,对于配置文件,您可能有一个用户、一组发票、一组地址等。在确定数据模型时,我建议如下:

  • 考虑一下您的UI。如果您需要用户+配置文件+发票,请继续制作这样的文档。让你的生活轻松多了
  • 不要害怕存储重复的信息
  • 您会经常想知道是否应该嵌入文档(向用户添加地址)或链接到文档(在引用发票的数组中放置引用列表)。我所听到的规则我认为是好的:如果数据不断变化,就建立一个链接/引用。如果它是不可变的或变化缓慢,则嵌入它
  • 如果您的文档随着时间的推移会增长很多,请考虑将其拆分。如果文档太大,Mongo必须将其移动到内存中