什么是多维数组上的ensureIndex索引mongodb字段的正确方法?

Kyl*_*son 6 php multidimensional-array mongodb mongodb-query

我有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
Run Code Online (Sandbox Code Playgroud)

问题:如果我想做一个find()来返回在"category2"中具有"rank"的所有"cat",其中$ exists =>"rank.category2"索引这个的正确方法是什么?我可以在"排名"集合上放一个简单的升序索引,还是需要所有1000多个类别*键的索引?是否有更好的方法来存储此信息或更简单的方法来索引它?

kaw*_*a21 7

怎么样 ...

rank.categories = [1, 2, 425];
rank.category = {
    1 : 1,
    2 : 13,
    425 : 50
}
Run Code Online (Sandbox Code Playgroud)

你可以索引db.collection.ensureIndex({"categories":1}).现在,您可以搜索类别并在找到每个类别时获得每个类别的排名.