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

时间:2017-01-18 21:04:57

标签: php mongodb multidimensional-array mongodb-query

我在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多个类别*键的索引?是否有更好的方法来存储此信息或更简单的方法来索引它?

1 个答案:

答案 0 :(得分:7)

怎么样......

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

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