1

我脑子里有一个标签系统,这是我的想法,

1,我可以制作一个mongodb数据库并将标签添加到嵌入字段并将它们全部索引

2,我可以使用SQL,我可以将标签作为新条目添加到表中

3,我可以在 mongodb 上创建另一个集合并这样做

例如标签是“鸡”,这是文档

tag:"chicken",
id:"1200000,32555,8787888888"

标签是鸡,id 是与鸡相关的其他文件,我认为这些系统会让我很头疼。尤其是第一个。你有什么适合我需要的标签系统想法吗?顺便说一下,会有超过一百万个不同的标签,在打开这个问题之前搜索了这个标签系统,

谢谢你

4

2 回答 2

1

MongoDB 非常适合此类标记,这要归功于它索引列表的方式。考虑这样一个文档:

{_id: 42, name: "someName", tags: ["chicken", "parrot", "hovercraft"]}

如果为tags字段添加索引,则可以有效地执行如下查询:

{tags: "chicken"}

"chicken"此查询将查找其列表中包含的所有文档tags- 即所有带有chicken标签的文档。

我不确定这是否是您在第一点中的意思。如果是这样,我不明白为什么它会让你头疼。

于 2012-12-08T19:32:50.550 回答
1

如果你想在 mongo 中实现这一点,我会创建看起来像

{
    tag: "chicken",
    ids : [ 12345,23456,34567 ]
},
...

然后是两个索引,一个在“tag”上,一个在“ids”上(http://docs.mongodb.org/manual/core/indexes/#multikey-indexes)。

db.tags.ensureIndex( { "tag": 1 } );
db.tags.ensureIndex( { "ids": 1 } );

根据您需要执行的查询,在这两个属性上创建复合索引可能很有价值。 http://docs.mongodb.org/manual/core/indexes/#compound-indexes

例如

db.tags.ensureIndex( { "ids": 1, "tag" : 1 } );

100 万个标签文档不会成为问题,我有类似的集合,大约 300 万个文档,每个文档在多键索引中平均有 15 个项目,性能非常好(来自 dev vm)。

我希望这有帮助

于 2012-12-08T19:32:20.243 回答