我有mongodb中的数据是这样的.有一群猫.猫被分为不同的类别,排名为1到100.一只猫可能位于2个或更多类别中.有1000种类别.
收集:"猫"
钥匙:
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"中具有"rank"的所有"cat",其中$ exists =>"rank.category2"索引这个的正确方法是什么?我可以在"排名"集合上放一个简单的升序索引,还是需要所有1000多个类别*键的索引?是否有更好的方法来存储此信息或更简单的方法来索引它?
怎么样 ...
rank.categories = [1, 2, 425]; rank.category = { 1 : 1, 2 : 13, 425 : 50 }
你可以索引db.collection.ensureIndex({"categories":1})
.现在,您可以搜索类别并在找到每个类别时获得每个类别的排名.