2015-07-20 95 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 /其他方法?我打算使用另一個數據庫,如果這用某種方式。

回答