将默认索引转换为哈希mongodb

时间:2013-11-21 01:07:47

标签: mongodb sharding

我想对现有用户集合进行分片。默认情况下,用户集合已经具有单个升序索引{"_id" : 1}。我想根据documentation将此索引转换为“散列”并根据此散列键转换为分片:

我尝试过“强力”解决方案来删除默认索引,然后使用“哈希”参数重新创建它,但它不允许这样做。

更新:我也尝试过db.users.ensureIndex({_ id:“hashed”})。但在我运行此命令之后,没有任何事情发生。

switched to db bg_shard_single
mongos> db.users.ensureIndex({_id:"hashed"});
mongos> db.users.getIndexes();
[
        {
                "v" : 1,
                "key" : {
                        "_id" : 1
                },
                "ns" : "bg_shard_single.users",
                "name" : "_id_"
        }
]

2 个答案:

答案 0 :(得分:2)

它不允许您这样做,因为您无法从_id字段创建索引。除此之外,您可以执行类似此db.collection.ensureIndex( { _id: "hashed" } )的操作,以在此字段上创建散列索引。

然后,您会看到"name" : "_id_hashed"作为散列索引,您可以在以后用于分片目的。

答案 1 :(得分:1)

我发现了什么问题。显然,我使用的是旧版的mongodb。这就是为什么mongos不希望我将'_id'更新为“哈希”。在我更新到2.4.8后,@ Salvador-Dali提到它变成了“名字”:“_ id_hashed”。