MongoDB模型集的唯一字符串

时间:2014-01-08 20:58:56

标签: mongodb

我在MongoDB中有一个集合,其中文档属性“items”包含一组唯一的字符串。它可以建模为字符串数组:

{
   _id : <Integer>
  items : [ <String>, <String>, ... ]
}

或作为字典,每个字符串作为键,布尔值设置为true:

{
   _id : <Integer>
  items : { <String> : true, <String> : true, ... }
}

我的两个顾虑是: 我想在项目中添加和删除字符串。我想进行查找,例如某些字符串在项目中的所有文档。什么是更好的解决方案?

我相信字典会更快,因为查找将是不变的。而对于数组,它必须在最坏的情况下运行整个数组。

但是,我对文件增长感到担忧(http://docs.mongodb.org/manual/core/data-model-operations/#data-model-document-growth)。特别是,我不确定“在文档中添加新字段”是指在这种情况下。

由于许多不同的关键字段,字典会比数组增长得快吗?

考虑一个包含两个文档的集合:

as array:

{ _id : 1, items : [a, b] }
{ _id : 2, items : [c, d] }

或作为字典:

{ _id : 1, items : { a : true, b : true } }
{ _id : 2, items : { c : true, d : true } }

字典是否会更多地影响文档大小(当然,除了额外的布尔值),因为我们在集合中有4个新键(a,b和c,d)?

0 个答案:

没有答案