【问题标题】:convert default index to hashed mongodb将默认索引转换为哈希 mongodb
【发布时间】:2013-12-05 07:18:42
【问题描述】:

我想对我现有的用户集合进行分片。默认情况下,用户集合已经有单个升序索引{"_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_"
        }
]

【问题讨论】:

    标签: mongodb sharding


    【解决方案1】:

    它不允许您这样做,因为您无法从 _id 字段创建索引。而不是这样,您可以执行类似db.collection.ensureIndex( { _id: "hashed" } ) 的操作来在该字段上创建哈希索引。

    然后您将看到 "name" : "_id_hashed" 作为您的哈希索引,您可以稍后将其用于分片。

    【讨论】:

      【解决方案2】:

      我找到了问题所在。显然,我使用的是旧版本的 mongodb。这就是为什么 mongos 不希望我将 '_id' 更新为“散列”。在我更新到 2.4.8 之后,@Salvador-Dali 提到它变成了“名称”:“_id_hashed”。

      【讨论】:

        猜你喜欢
        • 2010-09-29
        • 1970-01-01
        • 1970-01-01
        • 2019-10-27
        • 2019-05-23
        • 2018-10-19
        • 2017-01-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多