我正试图了解我的数据库结构的伟大架构设计的概念。我应该嵌入嵌套文档还是应该使用引用?
我有这个结构:
book
| bookTitle
| bookChapters
| | chapterTitle
| | chapterArticles
| | | articleTitle
| | | articleSubTitles
| | | | title
我将有多本书及其章节和文章。所以我有两个问题:
谢谢你的帮助,我想当我理解这些基本概念时,我几乎已经准备好了。
答案 0 :(得分:0)
如果这是数据库中的架构,那么您可以使用像这样的mongoose架构:
var articleSubTitleSchema = new Schema({title: 'string'});
var articleSchema = new Schema({title: 'string', articleSubTitles: [articleSubTitleSchema]});
var chapterSchema = new Schema({title: 'string', chapterArticles: [articleSchema]});
var bookSchema = new Schema({title: 'string', 'bookChapters': [chapterSchema]});
第二部分最好的选择是简单地获取整本书籍文档,并在应用程序代码中获取章节。
var book = ... query ...
var chapters = book.bookChapters;
var chapterTitles = _.pluck(chapters, 'title');
在这里,我使用http://underscorejs.org/来更轻松地抓住标题。
如果您要搜索包含特定章节的所有图书,可以编写如下查询:{'bookChapters.titles': '[title]'}
答案 1 :(得分:0)
没有开发人员不赞成在mongodb中拆分单个文档:)不幸的是,这在理论上很不错。实际上,mongodb和mongoose都没有这方面的支持。
当然有参考文献的支持,但相信我在这个方向上的每一种方法都会受到很多时间的惩罚,因为有太多的负面影响(人口,额外储蓄......)比较,如果我们节省额外的东西。
这是我迄今为止的经历。除非你想在mongodb-native之上编写一个自己的图层,否则尝试使用引用会有很多痛苦。