我的脑海中有一个标签系统,这是我的想法,
1,我可以创建一个mongodb数据库,并将标签添加到嵌入的字段中,然后对它们进行索引
2,我可以为它使用SQL,我可以将标签作为新条目添加到表中
3,我可以在mongodb上创建另一个集合,如下所示
例如,标签是“鸡”,这是文档
tag:"chicken",
id:"1200000,32555,8787888888"标签是鸡,id是与鸡相关的其他文件,我想这些系统会让我很头疼。尤其是第一个。你有什么我需要的标签系统的想法吗?顺便说一下,在开始这个问题之前,会有超过一百万个不同的标签和搜索这个标签系统,
谢谢
发布于 2012-12-09 03:32:20
如果你想在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-09 03:32:51
多亏了MongoDB索引列表的方式,它非常适合这样的标记。考虑像这样的文档:
{_id: 42, name: "someName", tags: ["chicken", "parrot", "hovercraft"]}如果为tags字段添加索引,则可以有效地执行如下查询:
{tags: "chicken"}此查询将在其tags列表中查找包含"chicken"的所有文档-即使用chicken标记标记的所有文档。
我不确定这是否是你在第一点中的意思。如果是这样,我就不明白为什么它会让你头疼。
https://stackoverflow.com/questions/13780522
复制相似问题