我正在尝试使用 node.js/express/mongodb 为自己编写一个博客引擎(也是学习 node.js 的开始)。为了比 Internet 上的教程更进一步,我想为博客引擎添加标签支持。
我想用标签做以下事情:
- 查看者可以在“标签云页面”上将所有标签视为标签云
- 查看者可以在文章列表页面和单篇文章页面上看到文章的标签
- 查看者可以单击单个标签来显示文章列表
- 更重要的是,查看者可以通过 SO 方式搜索带有特定标签的文章: [tag1][tag2] --> /tags/tag1+tag2 --> 同时具有 tag1 和 tag2 的文章列表
在关系数据库中,将使用 post_tag 表。但是如何在 MongoDB 中设计呢?
我检查了MongoDB 设计 - 标签
但正如 efdee 评论,设计
db.movies.insert({
name: "The Godfather",
director: "Francis Ford Coppola",
tags: [ "mafia", "wedding", "violence" ]
})
有问题:
这似乎并没有真正回答他的问题。您将如何获得在整个电影收藏中使用的不同标签列表?
这也是我关心的问题:在我的设计中,我需要显示所有标签的列表;我还需要知道每个标签有多少篇文章。那么有没有比上面展示的设计更好的方法呢?
我对上述设计的关注是:如果我想显示标签列表,查询将遍历数据库中的所有文章项目。有没有更有效的方法?