我玩弄MongoDB中,我发现自己不断思考RDBMS和我需要你的帮助,让我的头出于此。你应该在MongoDB中嵌入多少?
所以我有我想标记的文件。随着每个文档/示例的提及,我将在文档中嵌入标签。然而,我的下一个虽然会是,在哪里保存slug(从该标签)。
如果每个文档的保存,而不是像
["tag1", "this is tag 2"]
在保存它喜欢:
[{ "slug": "tag1", "tag": "tag1" }, { "slug": "this-is-tag-2", tag: "this is tag 2" }]
或者我应该有一个包含一个独特的标签来塞匹配另一个集合? (因此,在获取所有文件之前,首先需要查询“slug-this-a-tag-2”)?
是不是将文件中的文件保存在文档中浪费空间(考虑到关系是不断是相同的?),并且在查询集合时可能会导致性能开销?
你会怎么做呢?
首先感谢答案。我理解你的观点,但是我对标签的需求,我猜想只限于'让我获得具有这个或这些标签的文档',或者'有多少文档具有标签'tag1',从我读过的应该是挺直的。至于slug,出现在那里的唯一原因就是能够快速创建/ tag/this-is-tag-2形式的URL,并且能够快速(安全地)检索所有相关文件。那么你会嵌入slu or,还是将它保存在另一个集合? – mobius
您应该能够从标签中创建slu alone。然后它变得非常简单(标签集合中没有对象,只是字符串)并且嵌入将会很好地完成这项工作。如果标签是'疯狂的东西',你可以很容易地将它映射到URL'/ tagged/crazy-stuff'。重点在于数组中的嵌入对象比简单字段(如数组中的字符串)更难以使用(并且速度更慢)。 – mnemosyn
我已经把它打开了,以防有人想发布答案,但因为你是唯一一个陷入了回答问题的人,所以我要把这个标记为正确的。谢谢! – mobius