sql - 如何使用 MongoDB 构建递归结构

标签 sql node.js mongodb data-structures recursion

我正在尝试使用 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/

相关文章:

SQL Server 2008 - 连接字符串

javascript - 如何在javascript中使用cheerio获取子属性值

java - 如何在 Tomcat 上使用 MongoDB 实现 Java EE 容器安全

sql - 给定同类操作的历史记录,如何计算在单独的表中提供的特定时间点之前/之后的操作数量?

.net - 表达式中未定义的函数 'Nz'

sql - ORDER BY 是否应该影响返回 SELECT 查询的行数?

Node .js : redirecting urls from http to https working well with all my urls except one

javascript - Mongoose 模型静态/方法不保存 "this"中的值

linux - .NET Core 的 MongoDB C# 驱动程序中不受支持的位置运算符的解决方法

mongodb - 如何使用 MongoAPI 在 Cosmos DB 中创建多键索引?