MongoDB: 在不同的数据模型中获取最新的 10 个项目?
MongoDB: Get latest 10 items in different data model?
我正在尝试用 MongoDB 做一个个人博客系统。该博客系统旨在支持正式文章和短推文,它们具有相似但不同的数据结构。例如,一篇文章必须有标题,但推文不能;他们都有创建日期。
设计中还有一个时间轴功能。时间轴将显示最新的 10 条条目,无论条目是文章还是推文,当按下 "load more" 按钮时,将显示 10-20 条条目...
所以我认为设计数据库模式有两种方法
- 将文章和推文保存到单独的 collection 中。
- 将所有内容保存到一个 collection 中,添加一个 "type" 字段用于指定。
我有三个问题:
- 如果我使用方法1,如何实现"latest 10 items"查询?欢迎使用 MongoDB 查询语言、mongoose、mongoengine 或其他语言的任何字面解释或示例代码。
- 如果我使用传统的 SQL 数据库(如 MySQL),是否有解决 "latest 10 items" 问题的通用方法?
- 哪些方法更符合 MongoDB 的理念?
谢谢
问题 1:如果您要将 articles 和 tweets 保存到单独的集合中,您要么必须进行应用程序端连接或者使用 $lookup
运算符,如果你有分片集合,这将不起作用。我倾向于避免具有该限制的运算符。
问题 2:我不与 SQL 合作,无法帮助您。
问题 3:将所有内容保存到一个集合中肯定更符合 MongoDB 哲学。 MongoDB 检索速度应该很快,尽管插入和更新速度较慢。进行应用程序端连接或必须使用 $lookup
会导致其将文档嵌入 windows.
之外的能力
至于您的数据模型,这是我的看法。我使用 java 驱动程序并且我曾经有一个自定义的 deserializer/serializer 来处理文档到 POJO 的映射。我相信它在 Mongo Java Driver 3.5 中得到了原生支持,不确定它是否已经用于 Mongoose。在任何情况下,您都可以定义一个包含两个模型中所有字段的 Model/Object,然后它会相应地序列化,无论您使用方法 2 从数据库中获取哪种类型。模型会变得有点乱添加更多字段,因此可能需要一些巧妙的命名
我正在尝试用 MongoDB 做一个个人博客系统。该博客系统旨在支持正式文章和短推文,它们具有相似但不同的数据结构。例如,一篇文章必须有标题,但推文不能;他们都有创建日期。
设计中还有一个时间轴功能。时间轴将显示最新的 10 条条目,无论条目是文章还是推文,当按下 "load more" 按钮时,将显示 10-20 条条目...
所以我认为设计数据库模式有两种方法
- 将文章和推文保存到单独的 collection 中。
- 将所有内容保存到一个 collection 中,添加一个 "type" 字段用于指定。
我有三个问题:
- 如果我使用方法1,如何实现"latest 10 items"查询?欢迎使用 MongoDB 查询语言、mongoose、mongoengine 或其他语言的任何字面解释或示例代码。
- 如果我使用传统的 SQL 数据库(如 MySQL),是否有解决 "latest 10 items" 问题的通用方法?
- 哪些方法更符合 MongoDB 的理念?
谢谢
问题 1:如果您要将 articles 和 tweets 保存到单独的集合中,您要么必须进行应用程序端连接或者使用 $lookup
运算符,如果你有分片集合,这将不起作用。我倾向于避免具有该限制的运算符。
问题 2:我不与 SQL 合作,无法帮助您。
问题 3:将所有内容保存到一个集合中肯定更符合 MongoDB 哲学。 MongoDB 检索速度应该很快,尽管插入和更新速度较慢。进行应用程序端连接或必须使用 $lookup
会导致其将文档嵌入 windows.
至于您的数据模型,这是我的看法。我使用 java 驱动程序并且我曾经有一个自定义的 deserializer/serializer 来处理文档到 POJO 的映射。我相信它在 Mongo Java Driver 3.5 中得到了原生支持,不确定它是否已经用于 Mongoose。在任何情况下,您都可以定义一个包含两个模型中所有字段的 Model/Object,然后它会相应地序列化,无论您使用方法 2 从数据库中获取哪种类型。模型会变得有点乱添加更多字段,因此可能需要一些巧妙的命名