在MongoDB中存储单个“一流”列表的惯用方法?

时间:2010-08-16 08:35:11

标签: architecture data-structures mongodb idioms

我想要存储在MongoDB中的特殊列表(一种队列,如在数据结构中,而不是在工作队列中)。我需要经常在我的应用程序中访问和操作这个单一列表 - 而且我没有几个相同类型的列表。

将它存储在单个文档中是最容易的,但我遇到的问题是找出从我的应用程序代码中引用该特定文档的最佳方法。我不想查询几个文档以找到正确的文档,因为只有一个文档将包含此列表。

我还不愿将列表拆分成集合中的几个文档,因为它只是一个简短的列表(它只限于400个元素,每个元素只是一小段文本,所以有没有超出4MB文件限制的风险。)

我已经想过几种可以做到这一点的方法,但似乎没有一种方法可行。如果一个是正确的方法,或者如果我遗漏了某些东西,请告诉我。

  1. 为文档设置自定义_id,并在我的应用程序中对其进行硬编码。
  2. 为文档创建一个仅包含该文档的集合,以便我可以通过获取该集合中的第一个文档来检索它。 (这看起来很糟糕)
  3. 使用document_name: 'my_special_list'之类的字段,并通过document_name查询来检索文档。我宁愿不这样做,因为我不需要这样的其他文件,所以只有一个文件会有document_name字段。
  4. 使用一组文档,每个文档都包含一个索引字段和一个元素内容字段,并使用map-reduce从中获取列表,或者沿着这些行显示某些内容。我宁愿不这样做,因为只需检索一个BSON列表,操作它并将其存回文档中就会更加直截了当。
  5. 使用不同的技术,因为MongoDB不适合它。

1 个答案:

答案 0 :(得分:1)

MongoDB documentation州:

  

欢迎用户使用自己的约定来创建ID; _id值可以是任何类型,只要它是唯一的。

所以选项1就是我这样做的方式。

更新

选项2有点像黑客,就像你自己说的那样 选项3为您可以使用_id字段的内容引入了一个附加字段 选项4是解决一个简单问题的复杂解决方案。