我应该如何在MongoDb中存储文档的“标签”?

时间:2012-11-19 16:49:25

标签: mongodb database-design optimization

我知道这个问题被多次询问,但就我的搜索技巧而言,每篇文章都是如何在SQL数据库中实现这一点,而没有提到NoSQL数据库。

我有要为其实现标记功能的文档 用户可以使用他们想要的任何字符串标记它们,然后我需要能够尽快查询文档(通过这些通用标记)

我的标签应该有String数组(这样我可以支持任意数量的标签),就像这样

{"_id":"aaa", "prop":"value", "tags":["tag1","tag2","tagN"]}

或将标签数量限制为5,并将它们作为不同的属性,例如

{"_id":"aaa", "prop":"value", "tag1":"value", "tag2":"value", "tag3":"value" }

哪种结构对于快速查询更好,特别是在mongodb中?

使用第二个结构可以让我通过这个字段索引集合,但建议使用5个索引吗?我的标签应该少吗?

1 个答案:

答案 0 :(得分:1)

您只想使用数组,这是您拥有的第一个示例。这将允许您拥有一致的模型和索引。

{"_id":"aaa", "prop":"value", "tags":["tag1","tag2","tagN"]}

如果索引包含数组的字段,MongoDB会在“多键索引”中单独索引数组中的每个值。[1]

[1] http://docs.mongodb.org/manual/core/indexes/#multikey-indexes