在MongoDB中存储/处理文档管理系统的标签

2 投票
1 回答
1397 浏览
提问于 2025-04-16 22:11

我正在做一个小项目,里面存储了各种文本文件。我设置了我的应用程序,把标签作为字符串保存在我的一个集合里,比如说:

标签: "Linux Apache WSGI"

存储和搜索这些标签都没问题,但我遇到的问题是,当我想做一个标签云,统计所有不同的标签,或者根据标签创建一个动态选择系统时,应该怎么处理这些标签?或者我应该用其他方式来存储它们吗?

从逻辑上讲,我可以遍历每一条记录,获取所有的标签,然后根据空格把它们分开,再以某种方式缓存结果。也许这就是正确的做法,但我想请教一下大家的意见。

我正在使用pymongo来和我的数据库进行交互。

1 个回答

6

或者我应该用其他方式来存储它们吗?

存储标签的标准方法是把它们放在一个数组里。在你的情况下,数据库看起来大概是这样的:

tags: ['linux', 'apached', 'wsgi']

... 有什么好的方法来拆分它们以便使用吗?

这就是 Map/Reduce 的用途。它的作用是“扫描每一条记录”。Map/Reduce 的输出是另一个可以查询的集合。

不过,还有另一种方法,就是保持“计数器”,并对它们进行更新。这样,当你保存一个新文档时,也会把与这个文档相关的所有标签的计数加一。

撰写回答