索引mongoDB中的几个字段

时间:2015-07-20 06:55:23

标签: mongodb indexing

我需要在MongoDB中存储每个对象的信息。每个对象可以有可变数量的属性,每个属性名称也可以不同。

对象1:

  • 名称:"橱柜编号1"
  • 类型:"橱柜"
  • 材料:" Wood"
  • 尺寸:" 12X15"
  • 建立于:" 2014年2月2日"
  • id:12212

对象2:

  • 姓名:" Tommy"
  • 类型:" Pet"
  • 所有者:" Tom"
  • 出生:" 2010年6月1日"
  • id:12321

因此每个对象可能具有不同的属性/字段。我希望通过过滤任何属性组合来灵活地查询此数据库。由于数据库可能非常庞大,我希望数据检索速度快,我希望能够进行某种索引以加快查询速度。

示例查询可能是:

  • 搜索所有材料=" Wood"并输入="表"
  • 搜索所有类型=" Dog"和老板="哈利"

我在考虑使用一个集合,其中所有属性都可以放在一个对象中,但无法看到索引是如何实现的。我显然可以将对象分解为单个属性对象然后存储它,这意味着有这样的东西:

对象1有多个单独的对象:

  • {" attr_name" :" name"," attr_value" :" Cupboard Number 1"," id" :12212}
  • {" attr_name" :"输入"," attr_value" :"橱柜"," id" :12212}
  • {" attr_name" :"材料"," attr_value" :" Wood"," id" :12212}
  • {" attr_name" :"尺寸"," attr_value" :" 12X15"," id" :12212}
  • {" attr_name" :"建立在"," attr_value" :" 2014年2月2日"," id" :12212}

现在我可以在attr_name上创建索引并获取' id',我可以使用它来收集该对象的所有记录。但是,这不会超出一个属性,而我的要求是在一个查询中过滤多个属性。

我想要一些如何构造整个对象(不像这里那样分解它)并且仍然能够创建索引。有什么线索可以做到吗?如何解决这些问题呢?是否有任何NOSQL /其他方法来解决此类问题?如果以某种方式为此服务,我愿意使用另一个数据库。

1 个答案:

答案 0 :(得分:0)

MongoDB有一个零售实施的参考架构文章,它反映了您要解决的问题。它还讨论了基于查询变量属性索引和显示分面搜索。 我想你会在那里找到高度相关的信息,并且是解决问题的良好起点:

https://www.mongodb.com/blog/post/retail-reference-architecture-part-1-building-flexible-searchable-low-latency-product