我正在尝试使用 SQL 做一些通常简单的事情(例如,在同一个表中使用外键)(使用 MongoDB 可能很简单,我只是还不知道),即构建一个递归数据结构.
在此示例中,我将讨论网站中的页面。我想制作一个多级页面结构。所以可能有:
- 首页
- 我们的产品
- 产品 1
- 产品 2
- 关于我们
- 我们在哪里?
- 联系我们
假设页面有标题和内容。
我需要知道执行此操作的最佳方法是什么,以及如何基于该数据结构构建站点地图(显示每个级别的每个页面的页面)。
我正在为此案例使用 MongoDB 构建一个 Node.js 应用程序。
编辑:通过简单地在每个页面中引用父页面不是可以工作吗?页面将类似于 { title: 'test', content: 'hello world', ParentPage: ObjectID(parent page) }
感谢您的帮助!
最佳答案
我个人会在这里实现一个物化路径结构,使用前缀不区分大小写的正则表达式(这意味着它将使用索引)来更新和查询非常容易,所以一个例子如下:
{_id: {}, path: 'about_us/where_are_we'}
正如您所看到的,这也允许 SEO 友好的 URL 直接点击这棵树,为您提供最大的力量。这对于您希望显示如下 URL 的帮助系统特别有用:
/help/how-to-use-my-site
由于 how-to-use-my-site
可以直接点击路径,甚至进一步,您可以容纳两个字段并直接点击全文,例如:
{_id: {}, path: 'about_us/where_are_we', normalised_url: 'where_are_we'}
当然,正如前面的答案所说,您必须知道您希望如何访问内容,但在我看来,物化路径是一个好的开始。
您可以在此处阅读有关 Mongo 树结构的更多信息:http://www.mongodb.org/display/DOCS/Trees+in+MongoDB
关于sql - 如何使用 MongoDB 构建递归结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808460/