我试图用MongoDB做个人博客系统。博客系统旨在支持正式文章和短推文,它们具有相似但不同的数据结构。例如,文章必须有标题,但推文不得;他们都有创作日期。
设计中还有一个时间轴功能。时间线将显示最新的10个项目,无论该项目是文章还是推文,以及何时加载更多"按下按钮,会显示10-20项...
所以我认为设计数据库模式有两种方法
我有三个问题:
由于
答案 0 :(得分:0)
问题1:如果要将文章和推文保存到单独的集合中,则必须进行应用程序端加入或使用$lookup
运算符,如果你有分片集合,这将无法工作。我倾向于避免那些有这种限制的运营商。
问题2:我不使用SQL,无法帮助你。
问题3:将所有内容保存到单个集合中绝对符合MongoDB的理念。 MongoDB应该快速检索,但插入和更新速度较慢。无论是应用程序端连接还是必须使用$lookup
类型,都可以将文档嵌入到窗口之外。
至于你的数据模型,这是我的看法。我使用java驱动程序,我曾经有一个自定义反序列化器/序列化器来处理文档到POJO映射。我相信它在Mongo Java Driver 3.5中本机支持,不确定它是否已经存在于Mongoose中。在任何情况下,您可以定义一个模型/对象,其中包含两个模型中的所有字段,然后它将相应地进行序列化,无论您使用方法2从数据库获取哪种类型。当您添加更多时,模型会变得有点混乱尽管如此,因此可能需要一些聪明的命名