MongoDB分片键索引是否作为普通索引加倍?

时间:2018-04-18 19:28:14

标签: mongodb mongodb-query sharding

我有一个在userId上编入索引的MongoDB集合 - 索引是" userId_1"。在某些时候,我们决定对集合进行分片,并选择分片键作为userId。结果,在集合上创建了另一个索引 - 索引是" userId_hashed"。

结果,我现在在这个相当大的集合上获得了两个索引(目前大约100GB),我担心在集合上维护这两个索引可能是浪费的。 。他们似乎可能彼此多余。

我知道我需要保留" userId_hashed"用于分片的索引,我知道散列索引具有的约束条件是您只能使用相等性检查进行过滤,而不是范围。鉴于" userId"识别系统中的唯一用户,查询范围内的userId没有意义,或者至少不是我们需要支持的操作。

那么,我可以删除" userId_1"指数?对该字段的查询是否会有效地使用" userId_hashed"索引正确有效?这是我们最常针对此集合运行的查询类型的示例:

db.history.find({ "userId": "abc123" }).sort({ "_id": -1 }).limit(10)

或者分页:

db.history.find({ "userId": "abc123", "_id": { $lt: ObjectId("blah1") }}).sort({ "_id": -1 }).limit(10)

0 个答案:

没有答案
相关问题