2017-01-18 71 views
6

我有像MongoDB這樣的數據。有一個貓的集合。貓被分類到不同的類別中,排名從1到100.一隻貓可能位於2個或更多類別中。有1000個類別。什麼是確保索引mongodb字段在多維數組上的正確方法?

COLLECTION: 「貓」

KEYS

rank.category1 = 1; // ranked 1st in category #1 
rank.category2 = 13; // ranked 13th in category #2 
rank.category425 = 50; // ranked 50th in category #425 

問題: 如果我想要做一個find()方法返回所有 「貓」 具有「排名「在」category2「其中$ exists =>」rank.category2「什麼是適當的方式來索引這個?我可以在「排名」集合上放一個簡單的升序索引嗎?還是我需要在所有1000多個類別*鍵上都有索引?有沒有更好的方式來存儲這些信息或更簡單的方法來索引它?

回答

7

......怎麼

rank.categories = [1, 2, 425]; 
rank.category = { 
    1 : 1, 
    2 : 13, 
    425 : 50 
} 

你可以索引db.collection.ensureIndex({"categories":1})。現在您可以搜索類別並在找到每個類別時獲得每個類別的排名。

+0

是的,我認爲這可能是唯一的方法來做到這一點。看起來不像你可以索引數組鍵......只有數組值。查詢看起來像什麼會返回包含單個類別標識的集合中的所有貓? –

+0

我找到了。它很容易找到()與... {categories:435} –

相關問題