2015-07-20 99 views
0

我需要在MongoDB中存储每个对象的信息。每个对象可以具有可变数量的属性,每个属性名称也可以不同。在mongoDB中的几个字段建立索引

对象1:

  • 名称: “橱柜1号”
  • 类型: “橱柜”
  • 材料: “木”
  • 尺寸: “12X15”
  • 建立在: “2014年10月2日”
  • id:12212

对象2:

  • 名称: “汤米”
  • 类型: “宠物”
  • 老板: “汤姆”
  • 出生:
  • ID “2010 6月1日”:12321

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

这个例子查询可以是:

  • 搜索其具有材料=“木”与类型=“表”
  • 所有记录搜索具有类型=“犬”的所有记录和所有者=“哈里“

我正在考虑使用一个集合,其中所有属性都可以放入一个对象中,但看不到索引是可能的。我能明显打破对象为单个属性的对象,然后存储它这将意味着有这样的事情:

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

  • {“attr_name”:“名字”,“ attr_value “: ”橱柜编号1“, ”标识“:12212}
  • { ”attr_name“: ”类型“, ”attr_value“: ”橱柜“, ”标识“:12212}
  • { ”attr_name“:”材料“,”attr_value“:”Wood“,”id“:12212}
  • {”attr_name“:”dimensions“,”attr_value“:”12X15“,” ID”:12212}
  • { “attr_name”: “建”, “attr_value”: “2014年10月2日”, “ID”:12212}

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

我想要一些如何构造整个对象(而不是像这里一样)并且仍然能够创建索引。任何线索如何做到这一点?这些问题应该如何解决?有没有解决这些问题的NOSQL /其他方法?我打算使用另一个数据库,如果这用某种方式。

回答