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