0

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

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

我是否应该为我的标签提供一个String数组(这将允许我支持任意数量的标签),像这样

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

或将标签的数量限制为 5 个,并将它们作为不同的属性,像这样

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

哪种结构更适合快速查询,特别是在 mongodb 中?

使用第二种结构可以让我按此字段索引集合,但是否推荐使用 5 个索引?我应该有更少的标签吗?

4

1 回答 1

1

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

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

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

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

于 2012-11-19T17:02:26.143 回答