2011-07-24 52 views
2

因此,我正在研究一个宠物项目,我正在存储各种文本文件。我有安装我的应用程序保存的标签,在我的收藏品中的一个字符串,一个例子是:在mongodb中为文档管理系统存储/使用标签

标签:“Linux的Apache的WSGI”

将它们存储和搜索为他们工作得很好,但我的问题当我想要做一些类似标签云的事情,计算所有各种标签,或者根据标签制作一个动态选择系统时,最好的办法是打破它们的工作方式?或者我应该以其他方式存储它们?

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

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

回答

6

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

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

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

...什么是打破他们一起工作的最好方法?

这是Map/Reduce的设计目的。这有效地“扫描每个记录”。 Map/Reduce的输出是您可以查询的另一个集合。

但是,还有另一种方法来做到这一点,这是保持“计数器”,并更新它们。所以当你保存一个新的文档时,你也增加了与该文档相关的所有标签。

相关问题