node.js - Mongodb - 子集合?

标签 node.js mongodb nosql

我是 MongoDb 的新手,我正在将它与 nodeJS 和 native Node mongodb 驱动程序一起使用。我对实现有疑问。我希望你能帮帮我: 我有这个“架构”,其中 db.pages 包含我网站每个部分的配置:

db.pages = [
   {name: 'contacts', settings:{...}},
   {name: 'blog', settings:{...}, posts: "blogPosts"},
   {name: 'media', settings: {...}, posts: "mediaPosts"}
]

db.blogPosts = [
  {title: 'post1', date: '2011-10-22', author:'me', content: '...'},
  {title: 'post2', date: '2011-11-22', author:'me', content: '...'},
  {...............................................................}
];

我在这里做的是,在每个页面中,我定义我是否有一个帖子集合,并且在 Node 中,当我加载页面时,我检查是否定义了 page.posts 并且,如果是,则加载适当的集合。

也许我错了,但这看起来太像一种关系了,所以我的想法是 将 blogPosts 的内容直接作为 pages 集合的属性 posts 的值,如下所示:

db.pages = [
       {name: 'contacts', settings:{...}},
       { name: 'blog', 
         settings:{...}, 
         posts: [
            {title: 'post1', date: '2011-10-22', author:'me', content: '...'},
            {title: 'post2', date: '2011-11-22', author:'me', content: '...'},
            {...............................................................}
         ]
       },
       {name: 'media', settings: {...}, posts: [...]}
    ]

我真的认为这在 NoSQL 环境中更有意义,但我可能错了。 我遇到的问题是,使用后一种配置,我似乎无法让 nodejs 将 posts 字段视为 mongo 集合。

我希望这对您有意义,如果是的话,我需要知道的是:

  1. 我认为第二种方法是正确的方法是对还是错?
  2. 我如何使用 Node 将“子集合”读取为集合,以便我可以应用游标并使用 find()sort()limit(), skip() 等等,在上面...

最佳答案

第一种方法更好。第二种方法有多个缺点:

  1. 每个文档的大小限制为 16MB。您将达到该限制并且将无法添加更多博客文章
  2. 您不能从磁盘中查询和获取单个博客文章,因为它们都在一个大文档中
  3. 如果你应用这个原则,那么你将把所有的评论也放在同一个页面文档中,使它变得更加复杂并且会失去很多灵 active

关于node.js - Mongodb - 子集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9633979/

相关文章:

node.js - Grunt 服务错误,运行 "compass:server"( compass )任务错误 : invalid option: --no-relative-assets

php - 从 PHP 获取信息到 HTML5 JavaScript 游戏

MongoDB 如何获取子文档属性等于某个值的不同子文档列表?

node.js - Mongoose,如何使用两个或条件执行 find()

arrays - 如何在 mongodb 中更新多个数组元素

sql - 如果值与第二个表匹配,则从一个表中提取值

node.js - 如何在实时服务器中配置 webpack

javascript - 设置 sameSite ="none"和安全 ="true"未修复 Chrome 引发的新 CORS 错误

mongodb - 基础mongodb理论

javascript - 显示 AWS(Amazon Web 服务)中 DynamoDB 的整个表