在mongodb中存储/使用标签用于文档管理系统

Gek*_*suu 2 python mongodb pymongo

所以我正在开展一个宠物项目,我正在存储各种文本文件.我已经设置了我的应用程序将标签保存为我的一个集合中的字符串,所以一个例子是:

标签:"Linux Apache WSGI"

存储它们并搜索它们工作得很好,但是当我想做一些像标签云,计算所有各种标签,或者根据标签制作动态选择系统时,我的问题就来了,什么是打破它们的最佳方法与...合作?或者我应该以其他方式存储它们?

从逻辑上讲,我可以扫描每条记录并获取所有标签,根据空间打破它们,然后以某种方式缓存结果.也许这是正确的答案,但我想问社区的智慧.

我正在使用pymongo与我的数据库进行交互.

Gat*_* VP 6

或者我应该以其他方式存储它们?

存储标记的标准方法是将它们存储为数组.在您的情况下,数据库看起来像:

tags: ['linux', 'apached', 'wsgi']
Run Code Online (Sandbox Code Playgroud)

...什么是打破他们合作的最佳方式?

这就是Map/Reduce的设计目标.这有效地"扫描每条记录".Map/Reduce的输出是您可以查询的另一个集合.

但是,还有另一种方法可以做到这一点,那就是保持"计数器"并更新它们.因此,当您保存新文档时,还会增加与该文档相关的所有标记.