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